[英]Unable to insert data in MS Access using parameterized query in c#
我有以下代码尝试将 3 个文本框的 e 值存储到 MS Access 2007 数据库中。
string ConnString = (@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\dxs.accdb");
string SqlString = "Insert Into tests( [Nam], [add], [phone]) Values (?,?,?)";
using (OleDbConnection conn = new OleDbConnection(ConnString))
{
using (OleDbCommand cmd = new OleDbCommand(SqlString, conn))
{
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue(@"Nam", textBox1.Text);
cmd.Parameters.AddWithValue(@"add", textBox2.Text);
cmd.Parameters.AddWithValue(@"phone",textBox3.Text);
conn.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("entered");
}
}
但即使输入值后代码正确,表中也没有存储任何内容。
不应该
cmd.Parameters.AddWithValue(@"Nam", textBox1.Text);
是:
cmd.Parameters.AddWithValue("@Nam", textBox1.Text);
等等其他参数?
当我遇到类似问题时,解决方案是:
如果数据库是应用程序的一部分,则可以将其复制到bin
文件夹中 - 然后应用程序使用它。 这就是为什么您无法使用 MS Access 客户端在数据表中找到更改的原因。
确保您的数据库存在于项目的exe
文件所在的 output(bin) 文件夹中。 如果没有,则将其复制到那里。 将database
文件放在正确的位置后,您将看到更改。
此外,您还需要对代码进行少量更改,您的参数有问题。 将Values (?,?,?)
更改为Values (@Nam,@add,@phone)";
并将@"Nam"
更改为"@Nam"
。请参阅评论Correction1 and Correction2
。
当您在字符串开头使用@
时,也无需使用双斜杠\\\\
string ConnString=@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\dxs.accdb");
string sql="Insert Into tests([Nam],[add],[phone]) Values (@Nam,@add,@phone)";
// Correction 1: Above line is changed ?,?,? to parameter names (names used by your command)
using (OleDbConnection conn = new OleDbConnection(ConnString))
{
using (OleDbCommand cmd = new OleDbCommand(sql, conn))
{
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@Nam", textBox1.Text);
cmd.Parameters.AddWithValue("@add", textBox2.Text);
cmd.Parameters.AddWithValue("@phone",textBox3.Text);
// Correction 2: your parameter names are changed @"xyz" to "@xyz"
conn.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("entered");
}
}
你的插入语句应该像 dis
string SqlString = "Insert Into tests( [Nam], [add], [phone]) Values (@Nam, @add, @phone)";
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@Nam", textBox1.Text);
cmd.Parameters.AddWithValue("@add", textBox2.Text);
cmd.Parameters.AddWithValue("@phone",textBox3.Text);
尝试这个
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.