【发布时间】:2017-07-25 08:15:51
【问题描述】:
Private Sub ButtonSubmitID_Click(sender As Object, e As EventArgs) Handles ButtonSubmitID.Click
Dim comm As New SqlCommand
Dim conn As New SqlConnection
conn.ConnectionString = "Data Source = localhost\SQLEXPRESS; Initial Catalog = test2Forms; Integrated Security = SSPI;"
comm.Connection = conn
Dim ID = TextBoxID.Text
comm.Parameters.AddWithValue("@ID", ID)
Dim adapter As SqlDataAdapter = New SqlDataAdapter(comm.CommandText, comm.Connection)
comm.CommandText = "SELECT * FROM withActivityLog3 WHERE ID = @ID"
Dim records As DataSet = New DataSet
adapter.Fill(records)
DataGridView2.DataSource = records
End Sub
CommandText 属性尚未初始化是我收到的错误。我能够在表单加载时将所有数据从数据库中提取到 GridView 中,但是当我尝试使用按钮触发器上的 WHERE 子句将其缩小到一个 ID 时,会出现上述错误。我使用调试器一次跟踪一个步骤,命令和连接字符串看起来正确。我还使用 SQL Server 命令行成功地在我的数据库上复制了查询。我正在搜索主键 (ID),因此预期结果将是数据库中唯一标识的行。
【问题讨论】:
-
仔细查看您的代码...您设置
comm.CommandText在之后将它(空)传递给DataAdapter。您不需要为 DataAdapter 创建命令对象或连接对象 - 只需传递 SQL 和连接字符串。由于您确实需要/需要参数的 DBCommand 对象,因此您不需要 DataAdapter,只需直接填充数据表......不需要本地 DataSet 枯萎。 Rubber duck debugging -
是的,我看不懂
-
请注意,您现在可以在您认为有用或信息丰富的 任何 Q 或 A 旁边投票(点击向上箭头)。正如tour 解释的那样,投票可以帮助其他人找到好帖子。这是一种被动的方式,即使不发布答案,人们也可以参与并帮助他人。
-
太棒了。谢谢!我会这样做的!
-
这很有帮助,能够在下班前进行更改,但还不能完全测试。我的错,大声笑,我将表单设计为在大型显示器上全屏显示,而在家里的笔记本电脑上,我无法使用按钮。我很想看看这是否有效。这对我来说确实更有意义。我以前看过 Using 代码,这似乎是最好的方法。我将不得不记住 DRY 原则,我也喜欢橡皮鸭调试。也许我可以在工作中找人一起做。
标签: vb.net datagridview