2014-04-03 36 views
0

如何使用Form1中的文本框接收的輸入與form2中的mySQL建立連接。 現在我的程序是這樣的:使用輸入從form1.textbox到表單2中的mysql連接

Form1打開並詢問服務器,用戶名,密碼。 有3個按鈕可以使用form2模塊打開不同的表單,form2是SQL連接字符串。

我現在有權利這樣在窗體2的連接字符串:

Public Const cnString As String = "datasource=" & DBSelector.txtServer.Text & ";" _ 
            & "username=" & DBSelector.txtUsername.Text & ";" _ 
            & "password=" & DBSelector.txtPassword.Text & ";" _ 
            & "database=" & DBSelector.txtDatabase.Text & ";" 

查閱即時卡住此錯誤:「引用到非共享成員需要的對象引用。」 我是新的Visual Basic,我不能解決這個問題。 我認爲它是因爲Form2是一個模塊而不是公共類。

我希望有人能幫助我。提前致謝!

回答

0
  1. 要引用另一個表單「in live」,您必須有一個變量,它包含第二個表單的實例。

    爲了從主表格代碼中引用新表格,可以使用與它創建的第二表格相同的變量。

    你的情況 - 從所謂的形式向主叫方的形式引用,可以1店在窗體本身的靜態良莠不齊的形式例如,二傳的參數第二形態的構造(新()Sub)。

    ,或者你可以直接發送您的信息的構造,所以跳過所有的話題:

    主從代碼 - DBSelector你的情況:

    Public Class DBSelector 
    
        ... 
    
        Public Sub LanchSecondForm() 
         Dim form2 As Form2 = New Form2(txtServer.Text, _ 
                 txtUsername.Text, _ 
                 txtPassword.Text, _ 
                 txtDatabase.Text) 
    
         form2.Show() 
        End Sub 
    
        ... 
    
    End Class 
    

    第二 - 表單代碼:

    Public Class Form2 
    
        ... 
    
        Public cnString As String 
        Public Sub New(datasourcePrm As String, _ 
            usernamePrm As String, _ 
            passwordPrm As String, _ 
            databasePrm As String) 
         cnString = "datasource=" & datasourcePrm & ";" _ 
           & "username=" & usernamePrm & ";" _ 
           & "password=" & passwordPrm & ";" _ 
           & "database=" & databasePrm & ";" 
    
         InitializeComponent() 
        End Sub 
    
        ... 
    
    End Class 
    
  2. 常量reresent絕對VALU e,在編譯時已知。它不可能指定一個 「動態」 的價值,所以:

    Public a As String 
    Public Const b As String = a  'error: a its a variable 
    Public Const b As String = "abc" 'correct 
    

希望我的理解和幫助。

+0

我想我現在明白了一點,但是我沒有什麼可以在form1(DBSelector)中編輯的東西?因爲當我嘗試這樣我不能連接到數據庫。對不起,我需要的許多信息,但我很新與Visual Basic。 – SCALETTA

+0

@SCALETTA我編輯了我的答案。在我錯了之前,我認爲DBSeletor是次要的,現在我明白它是主要的。 – dovid

+0

感謝您的幫助,但我忘了說Form2(gModule)是一個模塊,我不能把「Dim gmodule as gModule = New gModule」。再次抱歉,我忘了說它的一個模塊...我非常新的Visual Basic和我不知道每個功能和類在VB中.. – SCALETTA