2017-02-10 101 views
0

這是調用InsertInto Sub和InsertInto Sub本身的代碼行。基本的東西,應該沒有問題,但事實並非如此。它通過,沒有錯誤並執行該命令,但該行永遠不會被添加到表中。我也有一個我插入的批量插入,它之前插入了許多行數據到表格中,我知道這些表格已經工作,並且已經嘗試過,但仍然沒有運氣。SQLite插入命令不起作用--- VB.NET中沒有錯誤

SQLite需要將行插入表中有什麼特殊之處嗎?我已經檢查過SQLite文檔,並且INSERT INTO語句與他們在其網站上顯示的完全相同。不確定該怎麼辦,因爲插入在tempDT表本地工作,如果我在那裏嘗試。我的意思是我可以加載表格,刪除它,然後在插入行後創建一個新表格,但我不應該這麼做。這是一個簡單的,基本的命令,它應該工作......並且在有人說在沒有$字符串實現的情況下嘗試寫出它之前,我已經嘗試了幾種不同的方法,包括「正常」方法和帽子方法也沒有工作。我也沒有使用數據變量,只是使用一個字硬編碼字符串的值,也沒有工作。

SQLTables.InsertInto(MyDB, "SaveGames", $"INSERT INTO SaveGames(FileName,SaveGameJSONString) VALUES ('{fileName}', '{model}')") 


Public Sub InsertInto(dbName As String, tableName As String, SQLCmd As String, Optional ByVal myFilePath As String = "") 
     Dim Conn As New SQLiteConnection() 
     GetConnectionString(dbName, Conn, myFilePath) 
     Using Conn 
      Dim SQL As String = SQLCmd 
      Dim Cmd As New SQLiteCommand(SQL, Conn) 
      Cmd.ExecuteNonQuery() 
     End Using 
    End Sub 
+0

什麼是MyDB的當前值,爲什麼myFilePath是空白的? –

+1

你不需要打開連接嗎? – Bugs

+1

ha ....好點錯誤............ –

回答

0

我不知道你GetConnectionString方法是確實,但它應該返回您傳遞給SQLiteConnection類的構造函數的連接字符串。

那麼下面應該工作:

Public Sub InsertInto(dbName As String, tableName As String, SQLCmd As String, Optional ByVal myFilePath As String = "") 
    Dim Conn As New SQLiteConnection(GetConnectionString(dbName, myFilePath)) 
    Conn.Open() 
    Dim Cmd As New SQLiteCommand(Sql, Conn) 
    Cmd.ExecuteNonQuery() 
    Conn.Close() 
End Sub 

一旦打開,你應該能夠執行這樣的查詢的連接:

Dim Cmd As New SQLiteCommand(SQLCmd, Conn) 
Cmd.ExecuteNonQuery() 
+0

我會嘗試在插入而不是調用函數中執行連接字符串...這肯定會奇怪,如果這是問題,因爲我已經使用相同的連接字符串函數來加載(表使用它加載罰款),創建併爲它做了近一年的批量插入現在,只是從來沒有試圖做一個單一的插... – MattE

0

忘記我要創建一個事務,然後在SQLite中提交事務以實際保存到數據庫中......否則它只是在本地保存更改,並且在關閉程序時它們會消失......現在按預期工作。

Using **transaction = Conn.BeginTransaction()** 
      Dim Cmd As New SQLiteCommand(SQLCmd, Conn) 
      Cmd.ExecuteNonQuery() 
      **transaction.Commit()** 
      Conn.Close() 
     End Using 

編輯:這工作,但並不需要我發現......我在DB看到值出現後實現再一次去了,我再次運行該程序是,它寫入斌/ Debug目錄,每次運行程序時都會覆蓋它。所以我現在把它指向了正確的目錄,並且它和我的初始代碼一樣按預期工作。