2

每当我尝试在数据库中插入日期时,我都会收到 formatException。

我将日期转换为字符串并尝试插入数据库。我已经尝试了所有方法,但它被视为例外。找到下面的代码:

$ DateTime date =  Convert.ToDateTime(rows["Limit_maturity_date"].ToString());
string newdate = date.ToShortDateString();//.Replace("/","");
DateTime dd = DateTime.ParseExact(newdate, "M/d/yyyy", CultureInfo.InvariantCulture);
queryString = "INSERT INTO Table (CODE, NUM, CCODE, LCODE, SACCODE, LIM, L_DATE)" +
                    " VALUES ('" + int.Parse(rows["code"].ToString()) + "','" + int.Parse(rows["number"].ToString()) + "','" + int.Parse(rows["Ccode"].ToString()) + "','" + int.Parse(rows["Lcode"].ToString()) + "','" + int.Parse(rows["Sacode"].ToString()) + "','" + int.Parse(rows["limit"].ToString()) + "','" + newdate "')";
4

1 回答 1

4

从根本上说,您正在解决将数据错误地插入数据库的问题。

您将所有内容都转换为字符串,并将这些字符串包含在 SQL 中。不要那样做。请改用参数化 SQL,只需将值直接放入参数中,而无需先转换为字符串。这解决了三个问题:

  • SQL注入攻击
  • 混合代码 (SQL) 和数据(参数值)
  • 有问题的字符串转换

看起来您正在进行很多字符串转换,我怀疑它们中的任何一个都不需要。每当您想将值转换为字符串时,问问自己是否真的必须这样做。每当您编写将值转换为字符串然后转换为另一种类型的代码时,如下所示:

int.Parse(rows["code"].ToString())

......你应该真的很怀疑。的执行时间类型是rows["code"]什么?你可以只使用演员表吗?

于 2012-11-21T11:38:10.150 回答