アダプターを使用して編集した後で、datagridviewをデータベースに更新することについてたくさんのことがありました。私は私に以下のような類似の例を与えたいくつかのウェブサイトを参照しました。しかし、私は私のbutton2_Clickの最初の行に "ArgumentNullExceptionが未処理"のエラーが発生しています。datagridviewからデータベースを更新する
私はプログラミングが初めてで、アダプターをグローバルとして宣言するよう教えられました。なぜ私はまだヌル値を得ているのですか?どんな助けもありがとう。ありがとうございました!
DataTable dt;
DataSet ds;
OleDbDataAdapter objAdapter = new OleDbDataAdapter();
public void button1_Click(object sender, EventArgs e)
{
//Bind button
string txt = textBox1.Text;
string strOleDbConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Project.mdb";
string strSqlStatement = string.Empty;
strSqlStatement = "SELECT * FROM jiahe WHERE [User] = '" + txt + "'";
OleDbConnection objConnection = new OleDbConnection(strOleDbConnectionString);
objAdapter = new OleDbDataAdapter(strSqlStatement, objConnection);
DataSet ds = new DataSet();
dataGridView1.DataSource = ds;
objAdapter.Fill(ds);
DataTable dt = ds.Tables[0];
dataGridView1.DataSource = dt.DefaultView;
try
{
if (dt.Rows.Count == 1)
{
MessageBox.Show("Record found.");
}
else
{
if (dt.Rows.Count == 0)
{
MessageBox.Show("Invalid input!");
}
}
}
catch
{
MessageBox.Show("Error!");
}
}
private void button2_Click(object sender, EventArgs e)
{
objAdapter.Update(ds);
dataGridView1.DataSource = ds;
}
どうすればそれらをまったく同じインスタンスにすることができますか?それは仕事をするグローバル変数にしないだろうか? – Daz
@daz:私の編集後の記事を参照してください。 – Tigran
ありがとうございます。今私は同じdsを指している。しかし、別のエラー "InvalidOperationExceptionが未処理"があります。 '更新には、変更された行を含むDataRowコレクションを渡すときに、有効なUpdateCommandが必要です。'というメッセージが表示されます。更新コマンドが無効なのはなぜですか?助けてください! – Daz