[英]ADO.NET entity data model
我使用bindingNavigatorDeleteItem_Click編寫用於從數據庫中刪除所選行的代碼。但它無法正常工作。 而且我也沒有收到任何錯誤。請幫助我。
private void bindingNavigatorDeleteItem_Click(object sender,EventArgs e)
{
try
{
int i = nODEDataGridView.Rows.Count;
if (MessageBox.Show("Delete?", "Confirm Delete", MessageBoxButtons.OKCancel) == DialogResult.OK)
{
SqlConnection sc = new SqlConnection("Data Source=.;Initial Catalog=SDHDB;Integrated Security=True");
SqlCommand cmd = new SqlCommand();
cmd.Parameters.AddWithValue("@LINKID", SqlDbType.Int).Value = nODEDataGridView;
sc.Open();
cmd.CommandText = "DELETE * FROM NODE WHERE LINKID=";
da.Update(ds, "NODE");
cmd.Parameters.AddWithValue("@LINKID", SqlDbType.Int).Value = i;
int rows = cmd.ExecuteNonQuery();
sc.Close();
if (rows > 0)
MessageBox.Show("Success");
else
MessageBox.Show("Failure");
nODEBindingSource.RemoveCurrent();
}
else
MessageBox.Show("Abort");
}
catch
{
}
您嘗試在定義命令文本之前添加參數值。 而且您甚至沒有在命令文本中定義參數。
cmd.CommandText = "DELETE * FROM NODE WHERE LINKID = @LINKID";
cmd.Parameters.AddWithValue("@LINKID", SqlDbType.Int).Value = nODEDataGridView;
您嘗試刪除代碼中包含nODEDataGridView
或i
作為LINKID
的行,這實在令人困惑。 我在代碼中看不到任何da
和ds
。
作為最佳實踐,使用using
語句來處置您的SqlConnection
, SqlCommand
和SqlDataAdapter
(如果有),而不是手動調用.Close()
方法。 也盡量避免使用AddWithValue
。 有時可能會產生意外結果 。 使用.Add()
方法,它的重載。
最后,請在編寫更多有關它的代碼之前,先閱讀一本關於ADO.NET的好書。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.