在使用ado.net C#插入命令访问数据库时出现“连接错误”。

3
我编写了一些用C# / ado.net插入值到Access数据库的代码,但出现了一个称为“连接错误”的错误,尽管在同一程序中使用select命令检索一些值并且成功运行。
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Mohamed\documents\visual studio 2012\Projects\Library Store\Library Store\Book.accdb");

conn.Open();
OleDbCommand cmd = new OleDbCommand("INSERT INTO Store VALUES (@val1,@val2,@val3,@val4,@val5,@val6)", conn);
cmd.Parameters.AddWithValue("@val1", ISBNTB.Text.Trim());
cmd.Parameters.AddWithValue("@val2", NameTB.Text.Trim());
cmd.Parameters.AddWithValue("@val3", GategoryTB.Text.Trim());
cmd.Parameters.AddWithValue("@val4", AuthorTB.Text.Trim());
cmd.Parameters.AddWithValue("@val5", int.Parse(CostTB.Text.Trim()));
cmd.Parameters.AddWithValue("@val6", dateTimePicker1.Text);
cmd.ExecuteNonQuery();
MessageBox.Show(" Done :)");
conn.Close();

谢谢;


1
错误的完整文本和类型是什么?是否有内部异常? - Bobson
@val1,@val2,@val3,@val4,@val5,@val6 都是你数据库中的列吗? - Elvin Mammadov
请确保点击复制异常详细信息到剪贴板,并将其复制的文本粘贴在一组<pre></pre>标签内。 - Scott Chamberlain
3个回答

2

试试这个,你没有说明出现了什么错误,但是如果有任何问题,这应该会帮助你找出你试图插入的所有列是否都存在。

尝试像这样编写sql语句

INSERT INTO 表名 ( 列1, 列2 ) VALUES ( 值1, 值2 ), ( 值1, 值2 )


OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data     Source=C:\Users\Mohamed\documents\visual studio 2012\Projects\Library Store\Library     Store\Book.accdb");

conn.Open();
OleDbCommand cmd = new OleDbCommand("INSERT INTO Store **( Column1, Column2 )** VALUES(@val1,@val2,@val3,@val4,@val5,@val6)", conn);
cmd.Parameters.AddWithValue("@val1", ISBNTB.Text.Trim());
cmd.Parameters.AddWithValue("@val2", NameTB.Text.Trim());
cmd.Parameters.AddWithValue("@val3", GategoryTB.Text.Trim());
cmd.Parameters.AddWithValue("@val4", AuthorTB.Text.Trim());
cmd.Parameters.AddWithValue("@val5", int.Parse(CostTB.Text.Trim()));
cmd.Parameters.AddWithValue("@val6", dateTimePicker1.Text);
cmd.ExecuteNonQuery();
MessageBox.Show(" Done :)");
conn.Close();

0

你需要在插入语句中指定列名,这样数据库才知道数据要去哪里。

"INSERT INTO Store (Column1, Column2) VALUES (@val1, @val2)"

0

如果你想将值插入到数据库中的所有列,可以使用这个查询语句

INSERT INTO Store  VALUES(@val1,@val2,@val3,@val4,@val5,@val6)

如果您在数据库中插入少量列的值,则会出现此错误,并且您必须将其编写为


INSERT INTO Store **( Column1, Column2 )** VALUES(@val1,@val2,@val3,@val4,@val5,@val6)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接