使用组合框从数据库检索数据

本文关键字:数据库 检索 数据 组合 | 更新日期: 2024-09-25 09:10:15

我有一个小学期项目,我有一一个连接到数据库表的组合框,我想编写一个按钮,当我从组合框中选择一个值时,它会显示表的其余部分。我在该项目中使用SQLEXPRESS数据库可能会有所帮助。

我尝试了这个代码,但它对我不起作用,给了我错误

","附近的语法不正确。

 string Msg;
        Msg = m.RunDml(" Select * From Doctor Where DocName=" + txtName.Text + " , Gender='" + chk1.Text + "' , BirthDate='" + dtpBDate.Text + "' , Address='" + txtAddress.Text + "' , Salary='" + txtSalary.Text + "')");
        if (Msg == "ok")
        {
            MessageBox.Show(" Editing Successfully done! ");
        }
        else
        {
            MessageBox.Show(Msg);
        }

因此CCD_ 2代码的CCD_ 1是:

    this.doctorTableAdapter.Fill(this.testdb_morgDataSet.Doctor);

使用组合框从数据库检索数据

关于SQL注入的要点已经在评论和noelicus的回答中提出。

出现错误的原因似乎是在应该使用AND(或者不太可能使用OR)的地方使用了逗号。WHERE子句中不允许使用逗号(afaik)。我刚刚在我的SQL服务器上尝试过,但得到了和您相同的错误。

有关详细信息,请参阅WHERE子句的MSDN文档。

因此,将您的请求更改为:

"SELECT * FROM Doctor WHERE DocName='" + txtName.Text + "' AND Gender='" +
    chk1.Text + "' AND BirthDate='" + dtpBDate.Text + "' AND Address='" + 
    txtAddress.Text + "' AND Salary='" + txtSalary.Text + "'"

不要忘记txtName.Text周围的引号,并删除末尾多余的右括号。

请自行了解SQL注入漏洞请注意,一旦您在其中一个文本框中输入',您的请求就会中断。

好消息是,该系统实际上非常有用。如果您查看SQL命令中的第一个逗号,它位于txtName.txt之后,您忘记了将其放在引号中(我看到您对其他文本项也这样做了)。

所以试试:

" Select * From Doctor Where DocName='" + txtName.Text + "' , Gender='" + chk1.Text + "' , BirthDate='" + dtpBDate.Text + "' , Address='" + txtAddress.Text + "' , Salary='" + txtSalary.Text + "')"

如果您想在以后改进您的项目或编写生产代码,那么您将考虑防止SQL注入。刚开始的时候不要担心,但要记住。。。为了防止SQL注入,您可以使用参数,而不是直接将用户字段放入SQL查询中,或者有人可以使用SQL注入对您的数据库做坏事(例如,如果txtName.Text设置为ComboBox0…)