Vb.net net数据库查询和复选框,正确的方法怎么办?
我是Vb.net和Sql Server的新手,不要太苛刻。谁能检查一下我的代码,我觉得这样做是不对的。其目的是仅当单击复选框并显示该查询时才显示查询。 多谢各位Vb.net net数据库查询和复选框,正确的方法怎么办?,vb.net,Vb.net,我是Vb.net和Sql Server的新手,不要太苛刻。谁能检查一下我的代码,我觉得这样做是不对的。其目的是仅当单击复选框并显示该查询时才显示查询。 多谢各位 Private Sub btnFilter_Click(sender As Object, e As EventArgs) Handles btnFilter.Click CheckValue = 0 'set to value 0 'check if any checkbox is checked. Fo
Private Sub btnFilter_Click(sender As Object, e As EventArgs) Handles btnFilter.Click
CheckValue = 0 'set to value 0
'check if any checkbox is checked.
For Each C As Control In Me.Controls
If C.GetType Is GetType(CheckBox) Then
Dim cb As CheckBox = DirectCast(C, CheckBox)
If cb.Checked Then
CheckValue = CheckValue + 1 'only works if value is above 1
End If
End If
Next
If CheckValue <> 0 Then 'only if check box is checked then rest will run
Try
If chkboxId.Checked = True Then 'assign value to checkbox
chkboxIdstr = "userid"
Else
chkboxIdstr = ""
End If
If chkboxName.Checked = True Then
chkboxNamestr = "username"
Else
chkboxNamestr = ""
End If
'to insert comma, only if both are true.
If chkboxId.Checked = True And chkboxName.Checked = True Then
SQLcomma = " , "
Else
SQLcomma = ""
End If
'so if both are checked we get a comma
SQL2 = chkboxIdstr + " " + SQLcomma + " " + chkboxNamestr
Catch ex As Exception
MsgBox(ex.Message)
End Try
Try 'sql connect and display
sqlCon.Open()
SQL = "SELECT " + SQL2 + " FROM user_info"
Dim dadapter As New SqlDataAdapter(SQL, sqlCon)
Dim dset As New DataSet
sqlCon.Close()
dadapter.Fill(dset)
'fill datagrid
dgv.DataSource = dset.Tables(0)
Catch ex As Exception
MsgBox(ex.Message)
sqlCon.Close()
End Try
Else
MsgBox("Plesase do check any box to filter ")
Exit Sub
End If
End Sub
-
我通过小型应用程序跟踪和出错来学习,主要是通过谷歌搜索解决方案。我认为您不需要所有这些代码。只需逐个测试您的复选框,并以增量方式构建要添加到SELECT查询中的列列表
Dim selectColumns As String
Try
If chkboxId.Checked = True Then
selectColumns = "userid,"
End If
If chkboxName.Checked = True Then
selectColumns &= "username,"
End If
' Other columns???? follow the same pattern
' If we have something in selectColumns then we could execute the query
' but before we trim away the last comma
If selectColumns.Length > 0 Then
selectColumns = selectColumn.TrimEnd(",")
sqlCon.Open()
SQL = "SELECT " & selectColumns & " FROM user_info"
.....
Else
' no data in selectColumns? Message for you user
MsgBox("Plesase do check any box to filter ")
Exit Sub
End If
Catch ex As Exception
MsgBox(ex.Message)
sqlCon.Close()
End Try
试试这个:
Private Sub btnFilter_Click(sender As Object, e As EventArgs) Handles btnFilter.Click
If chkboxId.Checked OrElse chkboxName.Checked Then
SQL2 = String.Empty
If chkboxId.Checked Then
SQL2 = SQL2 + "userid"
EndIf
If chkboxId.Checked AndAlso chkboxName.Checked Then
SQL2 = SQL2 + " , "
End If
If chkboxName.Checked Then
SQL2 = SQL2 + "username"
End If
Try 'sql connect and display
sqlCon.Open()
SQL = "SELECT " + SQL2 + " FROM user_info"
Dim dset As New DataSet
Using dadapter As New SqlDataAdapter(SQL, sqlCon)
dadapter.Fill(dset)
End Using
'fill datagrid
dgv.DataSource = dset.Tables(0)
Catch ex As Exception
MsgBox(ex.Message)
Finally
sqlCon.Close()
End Try
Else
MsgBox("Please do check any box to filter ")
End If
End Sub
如果您使用的是SqlDataAdapter,您不需要打开连接,因为它自己就可以完成,这只是一个问题。如果必须向Select语句传递值,您会怎么做?假设您必须选择一行,其中userid为45。你怎么通过45级考试?马努超。我不知道。我会查一查的。好吧,我就为了这个案子告诉你,因为你无法避免:。从user\u info中选择userid,其中userid=@value user\u infodadapter.SelectCommand.Parameters。AddWithValue@value,谢谢你。但我会试试的。谢谢。没有将错误对象引用设置为对象的实例。在为selectColumns赋予价值后,一切正常。史蒂夫,非常感谢你。在业余时间学习编程。