SQL删除命令
本文关键字:命令 删除 SQL | 更新日期: 2023-09-27 17:59:47
我在SQL中使用一个简单的DELETE语句时遇到了问题,结果出乎意料,它似乎将单词添加到了列表中??。一定是什么傻事!。但我看不见,试了几种不同的方法。同样的结果让人相当困惑。
public void IncludeWord(string word)
{
// Add selected word to exclude list
SqlConnection conn = new SqlConnection();
String ConnectionString = "Data Source = dev''SQLEXPRESS ;" + "Initial Catalog=sml;" + "User id=** ;" + "Password =*;" + "Trusted_Connection=No";
using (SqlConnection sc = new SqlConnection(ConnectionString))
{
try
{
sc.Open();
SqlCommand Command = new SqlCommand(
"DELETE FROM excludes WHERE word='@word'" +
conn);
Command.Parameters.AddWithValue("@word", word);
Command.ExecuteNonQuery();
}
catch (Exception e)
{
Box.Text = "SQL error" + e;
}
finally
{
sc.Close();
}
ExcludeTxtbox.Text = "";
Box.Text = " Word : " + word + " has been removed from the Exclude List";
ExcludeLstBox.AppendDataBoundItems = false;
ExcludeLstBox.DataBind();
}
尝试删除单引号。另外,为什么要将SQL字符串与连接对象(.. word='@word'" + conn
)连接起来???
尝试如下:
try
{
using (var sc = new SqlConnection(ConnectionString))
using (var cmd = sc.CreateCommand())
{
sc.Open();
cmd.CommandText = "DELETE FROM excludes WHERE word = @word";
cmd.Parameters.AddWithValue("@word", word);
cmd.ExecuteNonQuery();
}
}
catch (Exception e)
{
Box.Text = "SQL error" + e;
}
...
还要注意,因为连接被封装在using块中,所以不需要在finally
语句中关闭它。Dispose方法将自动调用.Close方法,该方法将返回到ADO.NET连接池的连接,以便可以重用该连接。
另一点是,这种IncludeWord
方法可以做很多事情。它发送SQL查询来删除记录,更新GUI上的一些文本框,并绑定一些列表=>像这样的方法应该分开,这样每个方法都有自己的特定责任。否则,这段代码在维护方面简直就是一场噩梦。我强烈建议您编写只执行单个特定任务的方法,否则代码很快就会变得一团糟。
SqlCommand Command = new SqlCommand(
"DELETE FROM excludes WHERE word='@word'" +
conn);
应该用代替
SqlCommand Command = new SqlCommand(
"DELETE FROM excludes WHERE word='@word'",
conn);
也可以尝试删除单引号,如其他人建议的
SqlCommand Command = new SqlCommand(
"DELETE FROM excludes WHERE word=@word",
conn);
@Word
不应在sql查询中使用引号。
也不确定为什么要在sql查询的末尾添加连接。
若要对此进行调试,请检查SqlCommand对象上的CommandText。在进一步阅读之前,你应该试试这个。
问题是在参数化的字符串周围添加单引号。去掉单引号,生活就很美好。:-)
哦,你的conn是一个对象,需要逗号,而不是+。
请参阅下面的代码:
private void button4_Click(object sender, EventArgs e)
{
String st = "DELETE FROM supplier WHERE supplier_id =" + textBox1.Text;
SqlCommand sqlcom = new SqlCommand(st, myConnection);
try
{
sqlcom.ExecuteNonQuery();
MessageBox.Show("delete successful");
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message);
}
}
private void button6_Click(object sender, EventArgs e)
{
String st = "SELECT * FROM supplier";
SqlCommand sqlcom = new SqlCommand(st, myConnection);
try
{
sqlcom.ExecuteNonQuery();
SqlDataReader reader = sqlcom.ExecuteReader();
DataTable datatable = new DataTable();
datatable.Load(reader);
dataGridView1.DataSource = datatable;
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message);
}
}
请参阅下面的代码:
String queryForUpdateCustomer = "UPDATE customer SET cbalance=@txtcustomerblnc WHERE cname='" + searchLookUpEdit1.Text + "'";
try
{
using (SqlCommand command = new SqlCommand(queryForUpdateCustomer, con))
{
command.Parameters.AddWithValue("@txtcustomerblnc", txtcustomerblnc.Text);
con.Open();
int result = command.ExecuteNonQuery();
// Check Error
if (result < 0)
MessageBox.Show("Error");
MessageBox.Show("Record Update of Customer...!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
con.Close();
loader();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
con.Close();
}
如果您无法访问上面规定的一些功能(我相信是由于旧版本的软件),您也可以尝试以下操作:
using (var connection = _sqlDbContext.CreatSqlConnection())
{
using (var sqlCommand = _sqlDbContext.CreateSqlCommand())
{
sqlCommand.Connection = connection;
sqlCommand.CommandText = $"DELETE FROM excludes WHERE word = @word";
sqlCommand.Parameters.Add(
_sqlDbContext.CreateParameterWithValue(sqlCommand, "@word", word));
connection.Open();
sqlCommand.ExecuteNonQuery();
}
}
...
我是助理开发人员;我相信";在上面