搜索引擎使用TextBox,ComboBox和RadioButton

时间:2013-02-09 20:09:16

标签: sql-server vb.net search search-engine

我正在开发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.

1 个答案:

答案 0 :(得分:0)

永远不要连接字符串来进行查询!使用SQL Parameters!您发布的查询倾向于SQL Injection

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子句之后的任何内容都应该像我上面所做的那样指定列名和值。所以condition1应该是例如:

// If the column type is varchar then single quotes must be used
Dim Condition1 As String = String.Format("Name = '{0}'", TextBox1.Text)