简体   繁体   English

使用insert命令通过ado.net C#访问数据库时出现“连接错误”

[英]“ Error in connection” when use insert command to access db with ado.net C#

I write code to insert some values to access database with C#/ado.net but there is an error appear called "error in connection" although i use select command to retrieve some valuesin the same program and works successfully 我编写代码来插入一些值以使用C#/ ado.net访问数据库但是出现了一个错误,称为“连接错误”,尽管我使用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();

thanks; 谢谢;

Give this a shot, you didn't specify what error it was but this should help you out if anythign figure out if you really have all columns your trying to insert to 给你一个镜头,你没有指出它是什么错误,但这应该可以帮助你,如果你知道你是否真的有你试图插入的所有列

Try writing you sql statement like so 尝试像这样写你的sql语句

INSERT INTO Table ( Column1, Column2 ) VALUES ( Value1, Value2 ), ( Value1, Value2 ) INSERT INTO表(Column1,Column2)VALUES(Value1,Value2),(Value1,Value2)


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();

您需要在insert语句中指定列名,以便DB知道数据的去向。

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

If you insert value to database with all column you can use this query 如果使用所有列向数据库插入值,则可以使用此查询

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

If you insert value to database with few column you will get this error, and you must write it as 如果您使用少量列向数据库插入值,则会出现此错误,您必须将其写为

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM