所以我是第一次发帖,长期使用这个网站。每当我有问题的时候,我总是确保先来这里。无论如何,我正在尝试使用现有的MySQL数据库和Visual Studio 2010在VB中构建一个CRM应用程序。以下是我迄今为止的代码,我正在试图将MySQL查询的结果返回到列表视图中,然后使其在有人双击一行时打开该帐户。这是我目前掌握的代码。
我已经做了几个小时了,如果有人能帮我,我将不胜感激。我在VB方面是一个极端的傻瓜,但在MYSQL方面表现不错。
Imports MySql.Data.MySqlClient
Public Class mainWindow
Public sConnection As New MySqlConnection
Private Sub mainWindow_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If sConnection.State = ConnectionState.Closed Then
sConnection.ConnectionString = "SERVER = localhost; USERID = system; PASSWORD =; DATABASE = system"
sConnection.Open()
End If
End Sub
Private Sub searchBtn_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles searchBtn.Click, Button1.Click
Dim sqlQuery As String = "Select * from tblclients"
Dim sqlAdapter As MySqlDataAdapter
Dim sqlCommand As New MySqlCommand
Dim Table As New DataTable
Dim i As Integer
With sqlCommand
.CommandText = sqlQuery
.Connection = sConnection
End With
With sqlAdapter
.SelectCommand = sqlCommand
.Fill(Table)
End With
For i = 0 To Table.Rows.Count - 1
With dataView
.Items.Add(Table.Rows(i)("id"))
With .Items(.Items.Count - 1).SubItems
.Add(Table.Rows(i)("fname"))
.Add(Table.Rows(i)("lname"))
.Add(Table.Rows(i)("company"))
.Add(Table.Rows(i)("email"))
.Add(Table.Rows(i)("phone"))
.Add(Table.Rows(i)("state"))
.Add(Table.Rows(i)("zipcode"))
End With
End With
Next
End Sub
End Class
如果有人能再次提供帮助,我将不胜感激。
MySqlDataAdapter 上缺少新的
Dim sqlAdapter As New MySqlDataAdapter
这将解决Object reference not set.....
的问题,但实际上,您应该听从Tim Schmelter的建议。在表单/应用程序的整个生命周期内,永远不要保持全局连接。这将是一场等待发生的灾难(尤其是MySql,它似乎对泄漏的连接更敏感)
Private Sub searchBtn_Click_1(.....) Handles searchBtn.Click, Button1.Click
Using sConnection = new MySqlConnection(.......)
Using sqlCommand = new MySqlCommand("Select * from tblclients", sConnection)
sConnection.Open()
Using sqlAdapter As New MySqlDataAdapter()
Dim Table As New DataTable
Dim i As Integer
With sqlAdapter
.SelectCommand = sqlCommand
.Fill(Table)
End With
...... ' the rest of your code that fills the view'
End Using
End Using
End Using
End Sub
通过这种方式,您可以关闭并立即处理连接、命令和适配器,在出现异常时也不再需要它们。请参阅使用语句