2016-06-15 5 views
-1

を添付します、接続を開くことができない、データベースを開くことができません。私のDB2は、私はデータベースコマンドを添付し、彼らは多くのエラーなどを取得するDataGridView</p> <p>に値を入れると異なるのSQLiteデータベースからテーブルを結合を選択しようとすると、私は問題を抱えている2 SQLiteデータベースと選択テーブル

としての私のマスターDBとpathinfo1など

pathinfo2この私のコード:

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 

、誰もがそれを修正する方法が知られていますか?

+0

これが質問に答えた場合は、チェックマークをクリックして、この投稿が未回答リストから削除されるようにしてください。 – Plutonix

答えて

1

これは二デシベル取り付け、照会、開口部のために正常に動作します:あなたがやりたいの

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 

一つは、適切に添付するDBファイル(およびための主要なDBファイルを参照することですその問題)、そしてTextBox(すなわちユーザー入力)は悪いスタートです。このような何か:

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

ティックにファイル名(複数可)を囲むは、パスにスペースが含まれている場合、誤って読まれるのを防ぐのに役立ちます。

接続を閉じる(または破棄する)場合は、添付ファイルが失われるため、別のdbを開き、添付してDBConnectionオブジェクトを返すメソッドを作成することができます。

+0

'path.combine(。。)' msg = "DB2の添付を試みたときにpathがmememberという文字列を結合していません"エラーmsg = "C:\ my pathデータベースはデータベースを開くことができません"。 @Plutonix、別の解決策がありますか?前に感謝、私はVBを使用して新しいです。 – jojodog

+0

'Path'は' System.IO'のメンバーです。 'Imports System.IO'をファイルの先頭に追加します。しかし、あなたが誤って実装したように、 'stringのメンバーではありません。 – Plutonix

関連する問題