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删除命令

尝试删除单引号。另外,为什么要将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();
    }
}
...

我是助理开发人员;我相信";在上面