0

C# フォームから Access テーブルを更新しようとしています。プログラムを実行するとメッセージは表示されませんが、[更新] をクリックするとプログラムが壊れて次のエラー メッセージが表示されます。

入力文字列は、正しい形式ではありませんでした。

アクセス テーブル フィールド:- ID(文字列)、名前(文字列)、スコア(int)

エラーメッセージ :-

 public Form1()
 {
    InitializeComponent();
 }

 OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Database3.accdb");

 public void UpdateRecord()
 {
        int score = Convert.ToInt32(textBox2.Text);
        **string command = "update score set Name= '"+textBox1.Text+"' , Score= '"+score+"' where ID= '"+textBox3.Text+"'  ";**
    OleDbCommand cmd = new OleDbCommand(command,conn);
    conn.Open();

    cmd.ExecuteNonQuery();

public void showData()
{
   string command = "Select * from score";
   OleDbCommand cmd = new OleDbCommand(command, conn);

   OleDbDataAdapter da = new OleDbDataAdapter(cmd);
   DataTable Table = new DataTable();
   da.Fill(Table);
   dataGridView1.DataSource = Table;
}
4

1 に答える 1

0

Scoreは整数です。文字列内で引用符で囲まれていますが、これは無効です。試す:

string id = textBox3.Text;
string command = "update score set Name= '"+textBox1.Text+"' , Score= "+textBox2.Text+" where ID= '"+id+"'  ";

データ検証が実施されていないことが懸念されます。テキスト ボックスに数値を入力しない場合はどうなりますか? また、文字列フィールドの場合、「ID」を整数に変換するのはなぜですか?

于 2013-04-18T17:35:58.030 に答える