因此,我希望从应用程序中更新oracle数据库中的日期字段,因此我使用以下查询和代码
string insertqeuryrepair = "UPDATE REPARATIE SET PROBLEEM ='" + problem + "',DATUM = '11-12-2015' WHERE ONDERHOUDID=" + maintenanceID.ToString();
OracleSQL.modifyQuery(insertqeuryrepair);
我的modifyQeury函数如下
public static Boolean modifyQuery(String query)
{
bool succes = false;
OracleCommand cmd = new OracleCommand(query, connection);
try
{
if (connection.State == ConnectionState.Closed)
connection.Open();
cmd.ExecuteNonQuery();
succes = true;
}
catch (Exception e)
{
Debug.WriteLine("[OracleSQL]Error, message: " + e.Message);
}
finally
{
connection.Close();
}
return succes;
}
现在,当我运行这段代码时,应用程序被卡住了,然而,当我删除DATE = '11-12-2015‘时,它工作得很好。‘如果应用程序不能正常运行,我该如何更新日期?
发布于 2015-04-15 08:40:53
如果您使用TO_DATE()显式设置DATUM的格式,如下所示
string insertqeuryrepair = "UPDATE REPARATIE SET PROBLEEM ='" + problem + "',DATUM = TO_DATE('11-12-2015', 'dd-mm-yyyy') WHERE ONDERHOUDID=" + maintenanceID.ToString();
发布于 2016-10-05 17:00:55
首先,使用冒号表示OracleParameter ParameterName值来参数化更新查询:
string insertqueryrepair = "UPDATE REPARATIE SET PROBLEEM = :problem, DATUM = :myDate WHERE ONDERHOUDID= :maintenanceID";
接下来,将日期解析为DateTime
变量:
DateTime myDate = DateTime.Parse("11/12/2015");
第三,设置一个返回布尔变量并调用您的函数,但将其重命名为doQuery
,而不是modifyQuery
,因为您不应该修改其中的任何内容-只需设置参数并执行它:
bool succes = OracleSQL.doQuery(insertqueryrepair, myDate, problem, maintenanceID.ToString());
现在,我们将您的值传递给函数并对其进行参数化:
public static Boolean doQuery(string query, string problem, string maintenanceID, DateTime myDate)
{
bool succes = false;
OracleCommand cmd = new OracleCommand(query, connection);
try
{
if (connection.State == ConnectionState.Closed)
connection.Open();
OracleParameter param1 = new OracleParameter();
param1.OracleDbType = OracleDbType.Nvarchar2;
param1.ParameterName = "problem";
param1.Value = problem;
OracleParameter param2 = new OracleParameter();
param2.OracleDbType = OracleDbType.Nvarchar2;
param2.ParameterName = "maintenanceID";
param2.Value = maintenanceID;
OracleParameter param3 = new OracleParameter();
param3.OracleDbType = OracleDbType.Date;
param3.ParameterName = "myDate";
param3.Value = myDate;
cmd.Parameters.Add(param1);
cmd.Parameters.Add(param2);
cmd.Parameters.Add(param3);
cmd.ExecuteNonQuery();
succes = true;
}
catch (Exception e)
{
Debug.WriteLine("[OracleSQL]Error, message: " + e.Message);
}
finally
{
connection.Close();
cmd.Dispose();
}
return succes;
}
您甚至可以执行额外的步骤,使传入的变量成为泛型(param1、param2等),并检查它们是否为null,这样,如果您向此函数传递了一个不同的查询,可能只有1个值(其余的值可以设置为null),它就不必一直对3个变量进行操作。如果设置正确,此函数可以为您的任何查询执行所有工作。
https://stackoverflow.com/questions/29645360
复制相似问题