2016-10-26 1 views
0

Ich möchte eine Verbindungszeichenfolge erstellen und sie für alle Formulare in meiner Anwendung verwenden, aber es wird ein Fehler angezeigt.Objektreferenz nicht auf eine Objektinstanz festgelegt Fehler beim Erstellen der Verbindungszeichenfolge

Mein Code unten führt den Fehler: „Objektverweis nicht auf eine Instanz eines Objekts festgelegt

Imports System.Data.SqlClient 
Imports System.Data.OleDb 

Module sqlserverconnectionstring 
    Public connsql As SqlConnection  
    Dim connstr As String  

    Public Sub sqlserverconnection() 
     Try 
      connstr = "Provider=SQLOLEDB.1; Data Source=" & My.Settings.sqlservername & ";Initial Catalog=" & My.Settings.sqlDBname & ";Password=" & My.Settings.sqlPswd & ";User ID=" & My.Settings.sqlUserName 
      connsql.Open() 

     Catch ex As Exception 
      MsgBox(ex.Message.ToString) 

     End Try 
    End Sub 
    Public Sub sqlserverdisconnectdatabase() 
     Try 
      connsql.Close() 
     Catch myerror As SqlClient.SqlException 

     End Try 
    End Sub 
End Module 
+0

Haben Sie versucht, den Schritt-durch-Debugger zu benutzen? – Dai

+2

Mögliche Duplikat [Was für eine Nullreferenceexception ist, und wie repariere ich es?] (http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexcepti on-and-how-do-i-fix-it) –

+2

Sie haben die Variable 'consql' nicht initialisiert. –

Antwort

-5

enter image description here

Bitte fügen Sie das Bild oben sehen und diese Zeile hinzufügen. Ich denke, es wird helfen. Wenn das Problem weiterhin besteht, lassen Sie es uns wissen

+2

Fügen Sie keinen Code als Bilder hinzu! Außerdem haben Sie den tatsächlichen Fehler noch nicht behoben. 'consql' ist nicht initialisiert. –

+0

Okay danke für den Vorschlag .. –

+0

Nein, immer noch der gleiche Fehler. –

1

Das Feld connsql wird nie initialisiert, daher ist es immer null (Nothing in VB.NET).

Sie werden diese wollen:

Sub Connect() 

    Try 

     Me.connstr = "Provider=SQLOLEDB.1; Data Source=" & My.Settings.sqlservername & ";Initial Catalog=" & My.Settings.sqlDBname & ";Password=" & My.Settings.sqlPswd & ";User ID=" & My.Settings.sqlUserName 

     Me.connsql = New SqlConnection(Me.connstr) 
     Me.connsql.Open() 

    Catch ex1 As InvalidOperationException 
     MsgBox(ex1.Message) 
    Catch ex2 As SqlException 
     MsgBox(ex2.Message) 
    Catch ex3 As ConfigurationErrorsException 
     MsgBox(ex3.Message) 

    End Try 

End Sub 

Ich stelle fest, dass es eine bessere Idee sein wird, die gesamte Verbindungszeichenfolge in der App.config zu speichern Datei, anstatt es zur Laufzeit zu bauen (was ist, wenn der Benutzer eine SSPI-Verbindung, zum Beispiel):

In Ihrer Datei App.config:

<configuration> 
    <connectionStrings> 
     <add name="db" connectionString="it goes here" /> 
    </connectionStrings> 
</configuration> 

Verbrauch:

Me.connsql = new SqlConnection(ConfigurationManager.ConnectionStrings("db").ConnectionString) 
0

Sie müssen zunächst ein Objekt der SqlConnection erstellen, und stellen Sie die Connection vor dem die Verbindung

connstr = "Provider=SQLOL ..." 
connsql = new SqlConnection(connstr) 
connsql.Open() 
0

connstr öffnen = „Provider = SQLOLEDB.1; Data Source =“& My.Settings.sqlservername & "; Initial Catalog =" & My.Settings.sqlDBname & "; Password =" & & My.Settings.sqlPswd "; User ID =" & My.Settings.sqlUserName connsql = New SqlConnection (connstr) connsql.Open()

gelöst Danke an alle .....

Verwandte Themen