c# 中使用sql语句错误

来源:百度知道 编辑:UC知道 时间:2024/06/08 19:26:09
string strinsert = "INSERT INTO data(key,d1,d2,d3,d4,d5,d6,d7,d8,d9) VALUES (@key,@p1,@p2,@p3,@p4,@p5,@p6,@p7,@p8,@p9)";
OleDbCommand cmd = new OleDbCommand(strinsert, mycon);
cmd.Parameters.Add("@key", OleDbType.VarChar, textBox1.Text.Length).Value = textBox1.Text;
cmd.Parameters.Add("@p1", OleDbType.VarChar, textBox1.Text.Length).Value = textBox2.Text;
cmd.Parameters.Add("@p2", OleDbType.VarChar, textBox1.Text.Length).Value = textBox3.Text;
cmd.Parameters.Add("@p3", OleDbType.VarChar, textBox1.Text.Length).Value = textBox4.Text;
cmd.Parameters.Add("@p4", OleDbType.VarChar, textBox1.Text.Length).Value = textBox5.Text;
cmd.Parameters.Add("@p5", OleDbType.VarChar, textBox1.Text.Length).Value = textBox6.Text;
cmd.Parameters.Add("@p6", OleDbType

直接这么写就没错误
cmd.Parameters.Add("@key", textBox1.Text)

把你的第一条改成这样就行了.

string strinsert = "INSERT INTO [data]([key],[d1],[d2],[d3],[d4],[d5],[d6],[d7],[d8],[d9]) VALUES (@key,@p1,@p2,@p3,@p4,@p5,@p6,@p7,@p8,@p9)";

也就是给表名和字段名加上[].

你先用断点调试啊。然后看看在执行倒数第一句之前cmd、strinsert 的值是什么啊,把它放到数据库去执行看看是什么错误。
然后再找到错误,改掉。

我觉得楼主你要自己学会解决问题的能力,这点比知识本身更重要。

(@key,@p1,@p2,@p3,@p4,@p5,@p6,@p7,@p8,@p9)";
每个都加单引号

如果你的数据库中所有的字段都是varchar型的话,就没有错误,否则若是有整型或日期型的话,就有错误了,建议你在第一行代码插入断点,运行后执行添加,然后按F11逐句执行,执行到cmd.ExecuteNonQuery();之前,看下你的cmd.CommandText是什么东西,看这句有没有错误就知道了,把这句放到查询分析器里执行一下,看提示什么再改就OK了

建议:
string strinsert = "INSERT INTO data(key,d1,d2,d3,d4,d5,d6,d7,d8,d9) VALUES (@key,@p1,@p2,@p3,@p4,@p5,@p6,@p7,@p8,@p9)";
OleDbCommand cmd = new OleDbCommand(strinsert, mycon);
cmd.Parameters.Add("@key", OleDbType.VarChar);
cmd.Parameters["@key"].Value = textBox1.Text;