2014-10-19 12 views
0

내가하려는 것은 MySQL 연결을 Window1 (LoginWindow)에서 Window2 (DBAA)로 열어 두는 것입니다. 두 번째 창에서 데이터를 읽고 삽입 할 수 있습니다. 데이터를 삽입하려고하면 "이 MySQL 서버에 연결할 수없는 호스트"가 표시됩니다.Visual Basic에서 MySQL 연결을 열린 상태로 유지

Imports MySql.Data.MySqlClient 

Public Class LoginWindow 
    Dim MysqlConn As MySqlConnection 
    Public Sub Button_Click(sender As Object, e As RoutedEventArgs) 
     MysqlConn = New MySqlConnection() 

     MysqlConn.ConnectionString = "server=" & server.Text & ";" _ 
     & "user id=" & username.Text & ";" _ 
     & "password=" & password.Password & ";" _ 
     & "database=" & database.Text & ";" 
     Try 
      MysqlConn.Open() 
      MessageBox.Show("Connection to Database has been opened.") 
     Catch myerror As MySqlException 
      MessageBox.Show("Cannot connect to database: " & myerror.Message) 
     Finally 
      MysqlConn.Dispose() 
     End Try 
     Dim DBAA As DBAA = New DBAA 
     DBAA.Show() 
     Me.Hide() 
    End Sub 

    //Non Applicable Code 

End Class 

다음은 열리는 두 번째 창 (DBAA)입니다.

Imports MySql.Data.MySqlClient 
Imports System.Data.Sql 

Public Class DBAA 
    Dim con As New MySqlConnection 
    Dim result As Integer 
    Dim cmd As New MySqlCommand 

    Private Sub insert01_Click_1(sender As Object, e As RoutedEventArgs) Handles insert01.Click 
     Try 
      con.Open() 

      With cmd 
       .Connection = con 
       .CommandText = "INSERT INTO `test`.`data` (`value1`) " & _ 
           "VALUES ('" & data01.Text & "');" 
       result = cmd.ExecuteNonQuery 
       If result = 0 Then 
        MsgBox("Success!") 
       End If 
      End With 
     Catch ex As Exception 
      MsgBox(ex.Message) 
     End Try 
     con.Close() 
    End Sub 
End Class 

답변

0

두 번째 코드에서 연결을 정의했지만 연결 정보가 누락되었습니다. 연결 세부 정보를 제공해야합니다. 연결에 대해 OpenOpen이라고 부르지 만 연결 정보가 없습니다.

또한 열어 두지 마세요. 첫 번째 코드를 닫으면 좋지만 두 번째 코드에서는 몇 가지 세부 사항을 생략했습니다.

편집 ...

당신이 생성자 IIN 그렇게 할 수있는 연결을 통과하려면 ...

두 번째 수업이이 있는지 확인 ...

Private Property connection As MySqlConnection 
Public Sub New(ByVal con as MySqlConnection) 
    connection = con 
End Sub 

이제 '연결'을 사용할 수 있습니다.

두 번째 클래스의 인수로 현재 연결을 전달합니다 ...

Dim DBAA As DBAA = New DBAA(MysqlConn) 
+0

ok 추가 할 수는 있지만 어떻게 window1에서 window2로 연결 정보 입력을 제공합니까? – SamuelWest

+0

업데이트 된 답변 편집을 참조하십시오. 나는 비록 당신이 그것을 필요로 할 때 부를 수있는 함수를 만든다. – Codexer

관련 문제