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