【发布时间】:2015-04-15 08:32:52
【问题描述】:
所以我想从我的应用程序更新我的 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' 时,它工作得很好。 ' 我将如何在应用程序不卡住的情况下更新日期
【问题讨论】:
-
DATUM列的类型是什么?和其他列类型?顺便说一句,您应该始终使用parameterized queries。这种字符串连接对SQL Injection 攻击开放。 -
我希望
problem不是来自用户提供的数据,否则您正在查看 SQL 注入问题。 -
始终使用 ISO 格式的日期 (YYYY-MM-DD) 以减少问题。
-
我使用 sql 查询的方式是听从我朋友的建议。我说了同样的话,这种事情对 sql-injection 非常容易,所以我尝试自己做一些注入,但是这些都被过滤了
-
顺便说一句,DATUM 列的类型是 DATE