小さなデータベースに接続する小さなソフトウェアを作成しました。私はc#とwinfromsを使用してローカルSQLサーバーに接続し、データベースを表示していますdatagridview
これまでのところ、データベースにレコードを正常に追加し、編集するレコードを選択することができました。
したがって、編集するレコードを選択し、必要なフィールドを編集するときに、編集ボタンをクリックすると、理論的には編集されたレコードが更新されます。ただし、そうすると、次のエラーに直面するようです:(図1を参照)
図1
このエラーが発生する理由がわかりません。どんな助けでも大歓迎です
インターフェース: (図2)
図2
編集 btnEdit を実行するコード:
private void btnEdit_Click(object sender, EventArgs e)
{
try
{
//Open Connection
sc.Open();
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM myEmployees WHERE EmpID" +
txtID.Text + " ", sc);
da.Fill(dt);
//start the editing of the selected record
dt.Rows[0].BeginEdit();
dt.Rows[0][1] = txtFName.Text;
dt.Rows[0][2] = txtLName.Text;
dt.Rows[0][3] = txtJRole.Text;
dt.Rows[0][4] = txtEmp.Text;
//dt.Rows[0][1] =
//stop editing
dt.Rows[0].EndEdit();
//sql commandbuilder that allow saving of records
SqlCommandBuilder cb = new SqlCommandBuilder(da);
//update the database
da.Update(dt);
//close connection
sc.Close();
loadEmp();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
// Application.ExitThread();
}
}
datagridview cick イベント。これにより、編集用のレコード選択が処理されます。
private void dgEmployees_Click(object sender, EventArgs e)
{
try
{
DataTable dt = new DataTable();
SqlDataAdapter slctRow = new SqlDataAdapter("SELECT * FROM myEmployees WHERE EmpID=" +
Convert.ToInt16(dgEmployees.SelectedRows[0].Cells[0].Value.ToString()) + " ", sc);
slctRow.Fill(dt);
//display records into textboxes
txtID.Text = dt.Rows[0][0].ToString();
txtFName.Text = dt.Rows[0][1].ToString();
txtLName.Text = dt.Rows[0][2].ToString();
txtJRole.Text = dt.Rows[0][3].ToString();
txtEmp.Text = dt.Rows[0][4].ToString();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
// Application.ExitThread();
}
}