wpf System.Data.OleDb.OleDbException:'处理命令期间出现一个或多个错误

n8ghc7c1  于 2023-05-08  发布在  其他
关注(0)|答案(1)|浏览(238)
void login()
        {
            OleDbDataAdapter da = new OleDbDataAdapter(" select count(*) from admin where ='"+textBox1.Text+"' and username= '"+textBox2.Text+"'",conn);
            DataTable dt = new DataTable();
            da.Fill(dt);
            if (textBox1.Text.Equals(" "))
            {
                MessageBox.Show("ENTER USERNAME ");
            }
            else if (textBox1.Text.Equals(" "))
            {
                MessageBox.Show("ENTER USERNAME ");
            }
            else if (dt.Rows[0][0].ToString() == "1")
            {
                Form2 f = new Form2();
                f.Show();
                this.Hide();
            }
            else
            {
                Form2 F1 = new Form2();
                F1.Show();
                this.Hide();
                MessageBox.Show("username or password incorrect");
            }
        }

我想知道这个错误的答案。

fbcarpbf

fbcarpbf1#

您提供的代码在SQL查询中有语法错误。WHERE子句不完整,并且在“where =”表达式后缺少列名。要修复此错误,您需要在WHERE子句中添加列名,如更正后的代码所示:

"SELECT COUNT(*) FROM admin WHERE column_name='" + textBox1.Text + "' AND username='" + textBox2.Text + "'", conn.

但是,我还想提一下,您的代码可能容易受到SQL注入攻击。若要避免这种情况,应使用参数化查询,而不是将用户输入直接连接到SQL语句中。参数化查询如下所示:

"SELECT COUNT(*) FROM admin WHERE column_name=@value1 AND username=@value2", conn.

然后,您可以使用参数将@value1和@value2替换为textBox1.Text和textBox2.Text的值,如下所示:

cmd.Parameters.AddWithValue("@value1", textBox1.Text);
cmd.Parameters.AddWithValue("@value1", textBox2.Text);

请注意,我给你的代码是MySQL的。请查看数据库版本的文档。

相关问题