3

我有以下代码尝试将 e 值从 3 个文本框存储到 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");
   }
}

但是,即使输入值后代码是正确的,表中也没有存储任何内容。

4

4 回答 4

2

不应该

cmd.Parameters.AddWithValue(@"Nam", textBox1.Text);

是:

cmd.Parameters.AddWithValue("@Nam", textBox1.Text);

其他参数等等?

于 2012-11-18T08:06:16.910 回答
1

当我遇到类似问题时,解决方案是:

如果数据库是应用程序的一部分,则可以将其复制到bin文件夹中 - 然后应用程序使用它。这就是为什么您无法使用 MS Access 客户端在数据表中找到您的更改。

于 2012-11-18T08:04:14.923 回答
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");
   }
}
于 2012-11-18T08:46:07.333 回答
-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);

试试这个

于 2012-11-18T16:46:51.537 回答