2016-06-15 7 views
-1

i Problem, wenn ich versuche, Tabellen aus verschiedenen SQLite-Datenbank auszuwählen verbinden mit Datenbank-Befehl anhängen und den Wert in Datagridview setzenbefestigen 2 SQLite-Datenbank und wählen Sie Tabellen

sie erhalten viele Fehler zB: Datenbanken nicht öffnen können, ExuteNonQuery Fehler , kann keine Verbindung öffnen, kann Datenbanken nicht öffnen.

pathinfo2 als mein Meister db und pathinfo1 als meine db2

dies mein Code:

Sub slc_smscontact() 
    Dim fc1 As String = "Data Source=" + pathinfo2.Text + ";Version=3;" 
    Dim SQL As String = "ATTACH '" + pathinfo1.Text + "' AS db2" 
    Dim com As New SQLiteCommand(SQL) 
    Dim connection As SQLiteConnection = New SQLiteConnection(fc1) 
    'connection.ConnectionString = fc1 
    com.Connection = connection 
    connection.Open() 
    Dim retval As Integer = 0 
    Try 
     retval = com.ExecuteNonQuery() 
    Catch ex As Exception 
     MessageBox.Show("An error occurred, your attach databases was not completed.") 
    Finally 
     com.Dispose() 
    End Try 

    SQL = "select distinct a.data1 no_telp, b.data1 nama, db2.sms.address, db2.sms.body, db2.sms.date, db2.sms.date_sent, db2.sms.Thread_id from (select raw_contact_id,data1 from data where mimetype_id = 5) as a, (select raw_contact_id,data1 from data where mimetype_id = 7) as b where a.raw_contact_id = b.raw_contact_id INNER JOIN db2.sms ON data.no_telp = db2.sms.address;" 
    com = New SQLiteCommand(SQL) 
    com.Connection = connection 
    'retval = 0 
    Try 
     Dim ds3 As New DataSet() 
     Dim da3 As New SQLiteDataAdapter(com) 
     da3.Fill(ds3) 
     grid3.DataSource = ds3.Tables(0).DefaultView 
     'retval = com.ExecuteNonQuery() 
    Catch ex As Exception 
     MessageBox.Show("An error occurred, your select was not completed.") 
    Finally 
     'com.Dispose() 
     connection.Close() 
    End Try 
End Sub 

gibt es jemand wissen, wie man es beheben?

+0

Wenn diese Frage beantwortet wurde, klicken Sie bitte auf das Häkchen, damit dieser Beitrag aus der Liste unbeantworteter Antworten entfernt wird. – Plutonix

Antwort

1

Dies funktioniert zum Öffnen fein, Anbringen und eine sekundäre db Abfrage:

Dim SQL = "SELECT Id, Name, Fish, Bird FROM db2.Example" 
' "attachment" string 
Dim sqlAtt = String.Format("ATTACH '{0}' AS {1} ", sqlFile, "db2") 

' connect to "main" db 
Using dbcon As New SQLiteConnection(LiteConnStr) 

    ' create a command just for the attaching 
    Using cmdAtt As New SQLiteCommand(sqlAtt, dbcon) 

     dbcon.Open() 
     ' execute attachment 
     cmdAtt.ExecuteNonQuery() 

     ' now run a query on db2 from connection to db1 
     Using cmd As New SQLiteCommand(SQL, dbcon) 

      dtSample = New DataTable 
      dtSample.Load(cmd.ExecuteReader) 
      dgv2.DataSource = dtSample 
     End Using 
    End Using 
End Using 

Eines der Dinge, die Sie richtig machen wollen, ist die DB-Datei zu verweisen für anzubringen (und die Haupt-Datenbankdatei Das ist wichtig), und eine TextBox (dh Benutzereingabe) ist ein schlechter Start. Etwas wie folgt aus:

sqlFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), 
             "SQLite dbs", "secondary.db") 
Dim sqlAtt = String.Format("ATTACH '{0}' AS {1} ", sqlFile, "db2") 

Enclosing der Dateiname (n) in Zecken hilft zu verhindern, dass es falsch gelesen wird, wenn der Pfad ein Leerzeichen enthält.

Wenn/wenn Sie die Verbindung schließen (oder entfernen), geht die Anlage verloren. Daher möchten Sie möglicherweise eine Methode zum Öffnen und Anhängen der anderen Datenbank erstellen und ein DBConnection-Objekt zurückgeben.

+0

'path.combine (...)' Msg = "path combinate nicht ein member of string" kann nicht umgangen werden, wenn versucht wird, db2 anzuhängen. error msg = "C: \ Meine Pfaddatenbanken können keine Datenbanken öffnen". @Plutonix, gibt es eine andere Lösung? danke vorher, ich bin neu mit vb; – jojodog

+0

'Pfad' ist ein Mitglied von' System.IO'. Fügen Sie 'Imports System.IO' am Anfang der Datei hinzu. Aber es ist der Teil über 'ist kein Mitglied von String' klingt wie Sie es falsch implementiert haben – Plutonix

Verwandte Themen