3

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");
   }
}

しかし、値を入力した後のコードは正しいですが、テーブルには何も格納されていません。

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 に答える