Попытка создать собственное приложение CRM с использованием VB + MySQL

Так что я впервые постер, давний пользователь этого сайта. Каждый раз, когда у меня есть вопрос, я всегда обязательно прихожу сюда первым. Во всяком случае, я пытаюсь построить приложение CRM, используя существующую базу данных MySQL и Visual Studio 2010 в VB. Вот код, который у меня есть, и я пытаюсь вернуть результаты запроса 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

Если кто-то может помочь снова, я был бы очень признателен.

1 ответ

Решение

Отсутствует новый на MySqlDataAdapter

Dim sqlAdapter As New MySqlDataAdapter

Это исправит вашу проблему с Object reference not set.....Но на самом деле вы должны следовать предложению Тима Шмельтера. Никогда не поддерживайте глобальное соединение на протяжении всей жизни вашей формы / приложения. Это будет катастрофа, ожидающая случиться (особенно с 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

Таким образом, вы закрываете и удаляете соединение, команда и адаптер сразу после того, как они больше не требуются, ТАКЖЕ в случае исключений. См. Использование заявления

Другие вопросы по тегам