我删除的内容与
相同没有给出一个或多个参数的值
我实际上不知道修复此问题的代码。
这就是我的主题:
private void btnDelete_Click(object sender, EventArgs e)
{
try
{
string FirstName = txtFirstName.Text;
sql = " DELETE FROM Club_Member WHERE FirstName = @FirstName; ";
dbCmd = new OleDbCommand(sql, dbConn);
// Execute query
dbCmd.ExecuteNonQuery();
}
catch (System.Exception exc)
{
MessageBox.Show(exc.Message);
return;
}
答案 0 :(得分:1)
不是很明显吗?
您在@FirstName
中声明了SqlCommand
参数,但您从不添加值作为参数。
dbCmd = new OleDbCommand(sql, dbConn);
dbCmd.Parameters.AddWithValue("@FirstName", FirstName);
还可以使用using
statement来处置您的OleDbConnection
和OleDbCommand
。
using(OleDbConnection dbConn = new OleDbConnection(ConnString))
using(OleDbCommand dbCmd = dbConn.CreateCommand())
{
dbCmd.CommandText = "DELETE FROM Club_Member WHERE FirstName = @FirstName";
dbCmd.Parameters.AddWithValue("@FirstName", FirstName);
dbConn.Open();
dbCmd.ExecuteNonQuery();
}
我总是倾向于使用Add
方法而不是AddWithValue
,因为AddWithValue
方法发送nvarchar
类型,因为它是字符串变量。但在某些情况下,你并不想要这个。您也想声明SqlDbType
。
例如,如果您使用varchar
列并使用AddWithValue
方法,则ADO.NET会将其作为nvarchar
值发送,这可能会导致潜在的信息丢失。 (例如,对于非拉丁字符)
答案 1 :(得分:1)
private void btnDelete_Click(object sender, EventArgs e)
{
try
{
string FirstName = txtFirstName.Text;
sql = " DELETE FROM Club_Member WHERE FirstName = @FirstName; ";
dbCmd = new OleDbCommand(sql, dbConn);
dbCmd .Parameters.Add(new OleDbParameter("@FirstName",FirstName ));
// Execute query
dbCmd.ExecuteNonQuery();
}
catch (System.Exception exc)
{
MessageBox.Show(exc.Message);
return;
}
答案 2 :(得分:0)
这主要是因为拼写错误的值或者在输入或添加时将任何值留空。因此,数据库会将其与参数混淆。调试或只是检查拼写。 顺便说一下,我想知道您为Club_Member使用的主键是什么?