无法将类型'string'隐式转换为'bool'

时间:2013-08-18 13:45:57

标签: c# sql-server

我在运行项目时遇到错误。如果textbox1为空,我想创建一个if语句。我的代码是这样的:

        SqlCommand cmd = new SqlCommand(" DELETE from Records WHERE ([Student ID]='" + textBox1.Text + "')", con);
        MessageBox.Show("Data Deleted!", "Information ... ", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);

        textBox1.Text = " ";

        if (textBox1.Text = " ") 
        {
            MessageBox.Show("Please enter Student ID", "Delete Failed",MessageBoxButtons.OK,MessageBoxIcon.Error,MessageBoxDefaultButton.Button1);
        }
        cmd.ExecuteNonQuery();
        con.Close();

错误发生在texbox1.Text =“”

5 个答案:

答案 0 :(得分:6)

这是您的问题的根源: if (textBox1.Text = " ")

=是赋值运算符。您想使用==进行比较。

另一种选择是使用string.IsNullOrWhiteSpace。如果字符串为null""或任何数量的空格,则返回true。

E.g。 if (string.IsNullOrWhiteSpace(textBox1.Text))

顺便说一句,您的SQL容易受到SQL注入漏洞的攻击。请使用参数化查询。

答案 1 :(得分:5)

您正在与=进行比较,后者设置了一个值。

相反,您需要使用等于运算符==

答案 2 :(得分:3)

更改

if (textBox1.Text = " ")

if (textBox1.Text == " ")

=赋值运算符,但==等于运算符

像;

SqlCommand cmd = new SqlCommand(" DELETE from Records WHERE [Student ID] = @studentID", con);
cmd.Parameters.AddWithValue("@studentID", textBox1.Text);
MessageBox.Show("Data Deleted!", "Information ... ", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);

textBox1.Text = " ";

if (String.IsNullOrWhiteSpace(textBox1.Text)) 
{
    MessageBox.Show("Please enter Student ID", "Delete Failed",MessageBoxButtons.OK,MessageBoxIcon.Error,MessageBoxDefaultButton.Button1);
}
cmd.ExecuteNonQuery();
con.Close();

并且您应始终使用parameterized queries,此类代码可用于 SQL Injection 攻击。

使用String.IsNullOrWhiteSpace方法更合乎逻辑。

  

指示指定的字符串是null,空还是仅包含   白色空间字符。

顺便说一句,既然你自己决定你的文本,这两行就是意义。

textBox1.Text = " ";

if (String.IsNullOrWhiteSpace(textBox1.Text)) 

答案 3 :(得分:3)

这应该有用。

SqlCommand cmd = new SqlCommand(" DELETE from Records WHERE ([Student ID]='" + textBox1.Text + "')", con);
        MessageBox.Show("Data Deleted!", "Information ... ", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);

        textBox1.Text = " "; 

        if (textBox1.Text == " ") 
        {
            MessageBox.Show("Please enter Student ID", "Delete Failed",MessageBoxButtons.OK,MessageBoxIcon.Error,MessageBoxDefaultButton.Button1);
        }
        cmd.ExecuteNonQuery();
        con.Close();

答案 4 :(得分:1)

您也可以使用

if(textBox1.Text.trim()=="")
{

 MessageBox.Show("Please enter Student ID", "Delete Failed",MessageBoxButtons.OK,MessageBoxIcon.Error,MessageBoxDefaultButton.Button1);       
}
cmd.ExecuteNonQuery();}

这也处理空格“”。