我想重拍这个字符串:
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) + "')";
我想使用parameters.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();
答案 0 :(得分:0)
我很确定PhillipXT的评论在这里有答案。查询字符串中的变量(@ 1p等)与您将它们作为参数添加时的标记(@ p1等)不匹配。
添加参数时,它实际上会将命令文本中的字符串替换为您提供的值。在这种情况下,它将尝试用提供的值替换“@ p1”。但是,该字符串在命令文本中不存在。实际上,您的七个参数都不匹配命令文本中的名称。
更改名称的位置无关紧要,但这七个标签必须匹配。
答案 1 :(得分:0)
试试这个:
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();