删除字符串组合框项目C#

本文关键字:项目 组合 字符串 删除 | 更新日期: 2023-09-27 18:04:36

感谢您的帮助。你们所有人(字面上(

我检查了我的代码的另一部分,在那里我更新了一个条目,我使用了那个代码并修改了它

在这里

string sql = "DELETE from Login WHERE UserName = '" + comboBox1.SelectedItem.ToString() + "'";
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = sql;

            cmd.Parameters.Add(new SqlParameter("@UserName", comboBox1.SelectedItem.ToString()));
            int rowdel = cmd.ExecuteNonQuery();
            MessageBox.Show("Done!");

这是我通过组合框从数据库中删除特定行的代码。我的老师使用了同样的代码,他的程序也成功了。然而,它在上显示了一个错误

"int rowInserted=cmd.ExecuteNonQuery((;">

上面写着

System.Data.dll中发生类型为"System.Data.SqlClient.SqlException"的未处理异常其他信息:"="附近的语法不正确

这是我的代码:

private void button1_Click(object sender, EventArgs e)
        {
            string connectionString = "Server = HP-PC''SQLExpress; Database = CProject; Trusted_Connection = True";
            SqlConnection conn = new SqlConnection();
            conn.ConnectionString = connectionString;
            conn.Open();
            string sql = "delete from [Login] where UserName = " + comboBox1.SelectedText.ToString();
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = sql;
            int rowInserted = cmd.ExecuteNonQuery();
            label7.Text = rowInserted.ToString();
            conn.Close();

        }
        private void AddDeleteUsers_Load(object sender, EventArgs e)
        {
            string connectionstring = "Server=HP-PC''SQLExpress;Database=CProject;Trusted_Connection=True;";
            SqlConnection conn = new SqlConnection();
            conn.ConnectionString = connectionstring;
            conn.Open();
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "select UserName from Login";
            SqlDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            comboBox1.Items.Add(reader["UserName"].ToString());
            reader.Close();
            conn.Close();
        }

删除字符串组合框项目C#

我会给你一个提示。

错误消息在您的SQL代码中,如下所示:

    string sql = "delete from [Login] where UserName = " + comboBox1.SelectedText.ToString();

问题是SQL需要单引号中的文本,例如'text'。。。

在没有提供答案的情况下(因为这是家庭作业(,我认为这足以让你弄清楚吗?

编辑"按流行需求">

顺便说一句,不建议只从HTML输入(您的组合框(中获取值的原因之一是,它可能会被恶意人员操纵并替换为SQL代码,即SQL注入。

为了避免这种情况,建议使用参数。

就是一个例子

    string sql = "delete from [Login] where UserName = @UserName"

然后,在执行之前,您必须在命令中添加一个参数

command.Parameters.AddWithValue("@UserName", comboBox1.SelectedText.ToString());

这可以防止有人将您的SQL语句更改为某种阴险的东西。

更改

string sql = "delete from [Login] where UserName = " + comboBox1.SelectedText.ToString();

到这个

string sql = "delete from [Login] where UserName = '" + comboBox1.SelectedText.ToString() + "'";

你需要在文本周围加上单引号。

试试这个:

string sql = "delete from [Login] where UserName = '" + comboBox1.SelectedText.ToString() + "'";

最好使用SqlParameter来避免sql注入。

        string sql = "delete from [Login] where UserName = @username";
        SqlCommand cmd = conn.CreateCommand();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = sql;
        cmd.Parameters.AddWithValue("@username", comboBox1.SelectedText.ToString());
        int rowInserted = cmd.ExecuteNonQuery();
string sql = "delete from [Login] where UserName = '" + comboBox1.SelectedText.ToString()+ "'";

更好,不是吗?

顺便说一句,小心Sql注入。。。

为了防止SQL注入攻击,您应该使用参数化查询:

    string connectionString = "Server = HP-PC''SQLExpress; Database = CProject; Trusted_Connection = True";
    using (SqlConnection conn = new SqlConnection(connectionString))
    {
        conn.Open();
        string sql = "delete from [Login] where UserName = @UserName;";
        using (SqlCommand cmd = new SqlCommand(sql, conn))
        {
            SqlParameter p = new SqlParameter("UserName", comboBox1.SelectedText.ToString());
            cmd.Parameters.Add(p);
            cmd.ExecuteNonQuery();
        }
    }