sql - 使用带有组合框的 Vb.net 显示数据库中的数据
问题描述
我在我的语法中遇到一个错误,该错误指示在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
解决方案
正如 Vijay 在评论中提到的:
删除“WHERE”(AND WHERE date_registered BETWEEN)后跟 AND
但我还有一些其他的事情要指出:
command2.ExecuteNonQuery()
只会给你受影响的行数。你不需要它。- 尝试使用
CommandParameters
(您可能需要重新设计代码)
Dim sqlString = "SELECT * FROM studentdb1 WHERE class = @Class AND date_registered BETWEEN @StartDate AND @EndDate"
Dim command2 As New SqlClient.SqlCommand
command2 = con.CreateCommand
command2.CommandText = sqlString
command2.Parameters.Add("@Class", SqlDbType.VarChar).Value = ComboBox2.SelectedText
command2.Parameters.Add("@StartDate", SqlDbType.Date).Value = date1.Text
command2.Parameters.Add("@EndDate", SqlDbType.Date).Value = date2.Text
推荐阅读
- javascript - 交换类不会清除以前的补间值
- pdf - 每 8 小时将所有工作表转换为 pdf,或使用 Google Apps 脚本更改单元格值
- sparql - Wikidata SPARQL 查询以获取从俄罗斯维基百科链接的每个人的所有图像
- java - 当用户按下任何按钮时,如何从 Java Frame 中的用户输入中获取?
- youtube-api - 如何通过统计数据从 Youtube API 获取频道的所有视频
- ruby-on-rails - 在 div 中添加图像标签
- android - Xposed:如何在应用启动时获取上下文
- python - 使用 Popen 在 python 中运行子进程并启动 /wait 时无法获取退出代码
- c++ - 应该是虚拟析构函数?但是怎么做?
- vb.net - 使用 Access 数据库注册 VB.Net