2017-02-10 102 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目录,每次运行程序时都会覆盖它。所以我现在把它指向了正确的目录,并且它和我的初始代码一样按预期工作。