0

我正在 WindowsForms 中开发一个搜索引擎,我使用的是 VB.Net 2010 和 SQL Server 2008,我的连接是 ADO.Net

每当我使用文本框、组合框和单选按钮从数据库中检索记录时,我都会遇到连接字符串的困难。

我想根据这些对象的值检索记录,

Dim Condition1 As String = TextBox1.Text
Dim Condition2 As String = ComboBox1.Text
Dim Condition3  As String = RadioButton.Text

当我尝试连接时,我使用运算符 AND..

SELECT * FROM TableName WHERE (Condition1 AND Condition2 AND Conditon3)

当某些对象没有值时,它会给我一个错误。

Incorrect syntax near the word AND.
4

1 回答 1

0

切勿连接字符串进行查询!使用SQL 参数!您发布的查询很容易发生SQL 注入

Dim query as String = "SELECT * FROM TableName WHERE Column1 = @Column1 AND 
                             Column2 = @Column2 AND Column3 = @Column3"
Dim cmd As SqlCommand
cmd.Parameters.AddWithValue("@Column1", textBox1.Text)
cmd.Parameters.AddWithValue("@Column2", comboBox1.Text)
cmd.Parameters.AddWithValue("@Column3", radioButton1.Text)

除上述情况外,您尝试连接的条件无效。该子句之后的任何内容WHERE都应指定列名和值,就像我在上面所做的那样。所以条件1应该是例如:

// If the column type is varchar then single quotes must be used
Dim Condition1 As String = String.Format("Name = '{0}'", TextBox1.Text)
于 2013-02-09T20:12:19.510 回答