我正在尝试获取日期以字符串形式存储在表中,但是日期一直转换为与日期相关的负4位数字,我一生无法弄清楚我在哪里弄乱。请注意,我使用的是C#和SQL Server的组合
foreach(DataRow dr in dt.Rows)
{
int qty = 0;
string pname = "";
SqlCommand cmd3 = con.CreateCommand();
cmd3.CommandType = CommandType.Text;
cmd3.CommandText = "insert into order_item values('" + orderid.ToString() + "','" + dr["product"].ToString() + "'," +
"'" + dr["price"].ToString() + "','" + dr["qty"].ToString() + "','"+ dr["total"].ToString() + "')";
cmd3.ExecuteNonQuery();
qty = Convert.ToInt32(dr["qty"].ToString());
pname = dr["product"].ToString();
SqlCommand cmd6 = con.CreateCommand();
cmd6.CommandType = CommandType.Text;
cmd6.CommandText = "update stock set product_qty = product_qty - " + qty + " where product_name = '"+pname.ToString()+"'";
cmd6.ExecuteNonQuery();
// date keeps getting updated to negative 4 digit number which coordinates with the date. ex: 14-01-2020 is converting to -2007.
SqlCommand cmd7 = con.CreateCommand();
cmd7.CommandType = CommandType.Text;
**cmd7.CommandText = "update stock_over_time set product_qty = product_qty - " + qty + ", date_changed = " + date.ToString("dd-MM-yyyy") + "" +
" where product_name = '" + pname.ToString() + "'";**
cmd7.ExecuteNonQuery();
}
参考方案
直接的问题是:
, date_changed = " + date.ToString("dd-MM-yyyy") + "
会变成
, date_changed = 15-01-2020
这是:-2006
,它是(由于存储日期的原因)在1894年7月的某个时间。
一个不好的解决方法是添加引号,但这是:不好-它与国际化(是8月1日是8月1日还是1月8日是国际化),SQL注入等相关的一系列问题。
正确的解决方法是始终使用参数。例如:
cmd7.CommandText = @"
update stock_over_time
set product_qty = product_qty - @qty,
date_changed = @date
where product_name = @pname";
但是,这要求您添加带有值的参数。
最简单的方法是使用Dapper:
string pname = ...
int qty = ...
DateTime date = ...
con.Execute(@"
update stock_over_time
set product_qty = product_qty - @qty,
date_changed = @date
where product_name = @pname",
new { pname, qty, date });
注意:您的所有数据库访问都应该像上面一样被参数化,或者使用原始ADO.NET,或者使用诸如EF之类的工具进行参数化。到处。
当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…
Mongo汇总 - javascript我的收藏中有以下文件{ "_id": ObjectId("54490b8104f7142f22ecc97f"), "title": "Sample1", "slug": "samplenews", "cat": …
如何在Wiremock中为JUNIT匹配精确的json - java我正在使用Wiremock在Spring启动应用程序中模拟Junit的REST服务。我的问题是,我无法匹配多个匹配模式。 Junit.javaStringValuePattern pattern = WireMock.matching(".*"); givenThat(post(urlEqualTo("/softwares…
改进SQL INSERT查询以避免SQL注入 - python我正在使用pymyql / mysql-connector将消息写入mysql数据库。消息是在mqtt broker的回调(paho.mqtt回调)上处理的。我有4个不同的表,并且根据消息类型,我正在将消息插入数据库。我写了如下的插入查询。这种写法似乎导致sql注入。任何建议如何改善插入查询语句?# callback attached to paho.mqt…
如何在JQuery中操作JSONArray - javascript我有一个php函数,它以JSON返回此代码{"0":{"title":"Dans l\u2019appartement"},"1":{"title":"A l\u2019a\u00e9roport - D\u00e9part de B\u00e9at…