我正在学习连接到Microsoft Access并写入数据库。我在Access中创建了一个数据库,并希望将数据插入其中。
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Amin\Desktop\NamesDatabase1.accdb");
OleDbCommand cmd = new OleDbCommand();
string FN = textBox1.Text;
string LN = textBox2.Text;
cmd.CommandText = "INSERT INTO Names (FirstName, LastName) Values (FN,LN)";
cmd.Connection = conn;
conn.Open();
cmd.ExecuteNonQuery();
在我跑步之前似乎没有错误。我运行该程序,更新我的textBox1.text
和textBox2.text
并按SAVE,然后我收到错误:
SQL语句中的SYNTAX ERROR插入
我做错了什么?
答案 0 :(得分:3)
在您的插入中,您尝试添加为值FN
和LN
。这些值在命令范围中不存在,因此它不知道tu对它做了什么。您想要的是将这些值设置为参数,然后将它们的值与命令一起添加:
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Amin\Desktop\NamesDatabase1.accdb");
OleDbCommand cmd = new OleDbCommand();
string FN = textBox1.Text;
string LN = textBox2.Text;
cmd.CommandText = "INSERT INTO Names (FirstName, LastName) Values (@FN,@LN)";
cmd.Connection = conn;
cmd.Parameters.Add(new OleDbParameter("@FN", FN));
cmd.Parameters.Add(new OleDbParameter("@LN", LN));
conn.Open();
cmd.ExecuteNonQuery();
答案 1 :(得分:0)
您的代码正在崩溃,因为FN和LN是C#变量,您正试图将它们传递给查询。这不会在SQL中产生正确的语法。
您需要将FN和LN作为参数传递给查询。
将您的代码更改为以下内容。
OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Amin\Desktop\NamesDatabase1.accdb");
OleDbCommand cmd = new OleDbCommand();
string FN = textBox1.Text;
string LN = textBox2.Text;
cmd.CommandText = "INSERT INTO Names (FirstName, LastName) Values (@FN,@LN)";
cmd.Parameters.Add(new OleDbParameter("@FN", FN));
cmd.Parameters.Add(new OleDbParameter("@LN", LN));
cmd.Connection = conn;
conn.Open();
cmd.ExecuteNonQuery();
这可以解决您的问题。