OLE数据库错误

本文关键字:错误 数据库 OLE | 更新日期: 2023-09-27 18:06:09

我想重做这个字符串:

string cmdstr = "INSERT into GGG (event_id, device_id, parameter_id, parameter_int_id, time_id, clock_id, user_id) VALUES ('" + s.Substring(0, 45) + "', '" + s.Substring(46, 31) + "', '" + s.Substring(77, 41) + "', '" + r.Match(s.Substring(77, 41)) + "',  '" + s.Substring(118, 19) + "', '" + s.Substring(118, 8) + "',  '" + s.Substring(138, 10) + "')";

我想使用参数。addwithvalue。但是我有错误。

这是我的新代码,错误:

con.Open();
com.CommandText = "insert into GGG (event_id, device_id, parameter_id, parameter_int_id, time_id, clock_id, user_id) values (@1p, @2p, @3p, @4p, @5p, @6p, @7p)";
com.Parameters.AddWithValue("@p1", s.Substring(0, 45));
com.Parameters.AddWithValue("@p2", s.Substring(46, 31));
com.Parameters.AddWithValue("@p3", s.Substring(77, 41));
com.Parameters.AddWithValue("@p4", r.Match(s.Substring(77, 41)));
com.Parameters.AddWithValue("@p5", s.Substring(118, 19));
com.Parameters.AddWithValue("@p6", s.Substring(118, 8));
com.Parameters.AddWithValue("@p7", s.Substring(138, 10));
com.ExecuteReader();

OLE数据库错误

我很确定PhillipXT的评论中有答案。查询字符串中的变量(@1p等)与您将它们添加为参数(@p1等)时给它们的标签不匹配。

当您添加一个参数时,它实际上用您提供的值替换命令文本中的字符串。在这种情况下,它将尝试用提供的值替换"@p1"。但是,该字符串在命令文本中不存在。实际上,您的七个参数中没有一个与命令文本中的名称匹配。

更改名称的位置并不重要,但这七个标签必须匹配

试试这个:

con.Open();
com.CommandText = "insert into GGG (event_id, device_id, parameter_id, parameter_int_id, time_id, clock_id, user_id) values (@p1, @p2, @p3, @p4, @p5, @p6, @p7)";
com.Parameters.AddWithValue("@p1", s.Substring(0, 45));
com.Parameters.AddWithValue("@p2", s.Substring(46, 31));
com.Parameters.AddWithValue("@p3", s.Substring(77, 41));
com.Parameters.AddWithValue("@p4", r.Match(s.Substring(77, 41)));
com.Parameters.AddWithValue("@p5", s.Substring(118, 19));
com.Parameters.AddWithValue("@p6", s.Substring(118, 8));
com.Parameters.AddWithValue("@p7", s.Substring(138, 10));
com.ExecuteReader();