我有以下代码尝试将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");
}
}
但即使输入值后代码是正确的,也没有任何内容存储在表格中。
答案 0 :(得分:2)
应该不是
cmd.Parameters.AddWithValue(@"Nam", textBox1.Text);
是:
cmd.Parameters.AddWithValue("@Nam", textBox1.Text);
等其他参数?
答案 1 :(得分:1)
当我遇到类似的问题时,解决方案是:
如果数据库是应用程序的一部分,则可以将其复制到bin
文件夹中 - 然后应用程序可以使用它。这就是为什么你不能在MS Access客户端的数据表中找到你的更改。
答案 2 :(得分:1)
确保您的数据库存在于您的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");
}
}
答案 3 :(得分:-1)
你的插入语句应该像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);
试试这个