0

c#代码:

  namespace WpfApplication22
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, EventArgs e)
            {


                SqlConnection conn = new SqlConnection(@"data source=(local);database=Aukcija;integrated security=true;");
                SqlCommand cmd = new SqlCommand ("Select * from Users where username='"textBox1.Text +"' and pasword= '"textBox2.Text +"' ", conn);
                conn.Open();

    }
            }
        }

这有什么问题,我收到 11 个错误...谁能帮助我?

http://i.stack.imgur.com/rGCbZ.jpg错误列表

4

4 回答 4

1

您在 textBoxes 文本之前丢失了“+”号。

SqlCommand cmd = new SqlCommand ("Select * from Users where username='" + textBox1.Text +"' and pasword= '" + textBox2.Text + "' ", conn);

但是在这种情况下你最好使用命令参数。

于 2013-03-07T14:20:59.187 回答
1

SqlCommand cmd = new SqlCommand("Select * from Users where username='" + textBox1.Text + "' and password= '" + textBox2.Text + "' ", conn);

您在阅读文本框文本之前缺少+标志,并且您password在查询中拼写错误。

但是你真的应该放弃这个并改用参数化查询。你让自己容易受到SQL 注入攻击

于 2013-03-07T14:26:48.177 回答
1

我想说已经给出了正确的答案,但是通过将文本框的内容直接注入 SQL 命令中,您也犯了一个巨大的错误。这使得它容易受到 SQL 注入攻击的影响,这可能会破坏您的整个数据库。

总是,总是使用参数来避免这个问题。

SqlConnection conn = new SqlConnection(@"data source=(local);database=Aukcija;integrated security=true;");
                SqlCommand cmd = new SqlCommand ("Select * from Users where username=@username and pasword=@password ", conn);
cmd .Parameters.AddWithValue("username", textBox1.Text);
cmd .Parameters.AddWithValue("password", textBox2.Text);
                conn.Open();

在这里阅读更多:

http://en.wikipedia.org/wiki/SQL_injection

于 2013-03-07T14:27:21.913 回答
0

应该

SqlCommand cmd = new SqlCommand (
"Select * from Users where username='" + textBox1.Text + "' and password= '" + textBox2.Text + "'", conn);

您想通过使用以下内容来避免SQL 注入攻击

SqlCommand.CommandText = "SELECT * FROM tblTable WHERE TableID = @Parameter";
SqlCommand.Parameters.Add(new SqlParameter("@Parameter", parameterValue));
于 2013-03-07T14:24:20.957 回答