我的语法中有一个错误,它表示 AND
操作员
If ComboBox1.Text = "" And ComboBox2.Text = "" Then
MsgBox("Please Fill In The Details")
Else
Try
con.Open()
Select Case ComboBox1.Text
Case "Students Info"
Dim a = "SELECT * FROM studentdb1 WHERE class = " & ComboBox2.SelectedText & " AND WHERE date_registered BETWEEN " & date1.Text & " AND " & date2.Text & ""
displayTable(a)
End Select
con.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End If
我创建了一个名为 displayTable
使用通过参数传递的命令显示到datagridview
Public Sub displayTable(x As String)
Dim command2 As New SqlClient.SqlCommand
command2 = con.CreateCommand
command2.CommandText = x
command2.ExecuteNonQuery()
Dim dt As New DataTable
Dim da As New SqlDataAdapter(command2)
da.Fill(dt)
datagrid1.DataSource = dt
End Sub
2条答案
按热度按时间5ssjco0h1#
最好将代码分为与窗体控件交互的用户界面代码和与数据库交互的数据访问代码。
这个
Using...End Using
块负责关闭和处理连接和命令,即使存在错误。使用
Parameters
保护数据库不受sql注入的影响。我不得不猜测班级专栏的规模。检查数据库中的实际值。.ExecuteNonQuery
用于插入、更新和删除而不是选择。您可以加载DataTable
和一个读者。在ui中
uidvcgyl2#
正如维杰在评论中提到的:
删除“where”(和where date\ u registered between),后跟和
但我想指出的是:
command2.ExecuteNonQuery()
将只提供受影响行的计数。你不需要它。尝试使用
CommandParameters
(您可能需要重新设计代码)