SQLite Insert Into命令不工作--VB.NET中无错误

SQLite Insert Into命令不工作--VB.NET中无错误,vb.net,sqlite,insert,Vb.net,Sqlite,Insert,下面是调用InsertInto子和InsertInto子本身的代码行。基本的东西,应该没有问题,但事实并非如此。它通过,没有错误并执行命令,但从未将行添加到表中。我还编写了一个批量插入,它以前曾将许多行数据插入到表中,我知道这些数据是有效的,并且也尝试过,但仍然没有成功 SQLite是否需要在表中插入行?我已经检查了SQLite文档,INSERT INTO语句与他们在站点上显示的完全一样。不确定还有什么办法,因为如果我在tempDT表中尝试,insert可以在本地工作。我的意思是,我可以加载表,

下面是调用InsertInto子和InsertInto子本身的代码行。基本的东西,应该没有问题,但事实并非如此。它通过,没有错误并执行命令,但从未将行添加到表中。我还编写了一个批量插入,它以前曾将许多行数据插入到表中,我知道这些数据是有效的,并且也尝试过,但仍然没有成功

SQLite是否需要在表中插入行?我已经检查了SQLite文档,INSERT INTO语句与他们在站点上显示的完全一样。不确定还有什么办法,因为如果我在tempDT表中尝试,insert可以在本地工作。我的意思是,我可以加载表,删除它,然后在插入行后创建一个新表,但我不必这么做。这是一个简单的、基本的命令,它应该可以工作……在有人说要在没有字符串$implementation的情况下正常编写它之前,我已经尝试了几种不同的方法,包括“正常”方法和hat方法,但都不起作用。我也没有对数据使用变量,只是对值使用了一个单词的硬编码字符串,这也不起作用

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

我不知道您的
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()

忘记了我必须创建一个事务,然后在SQLite中提交该事务,以便将其实际保存到DB…否则它只会在本地保留更改,当您关闭程序时这些更改就会消失…现在可以按预期工作了

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

编辑:这是可行的,但不是必需的,我发现…我在看到数据库中的值后意识到,然后再次运行该程序时,发现它正在写入bin/Debug目录,每次运行该程序时,它都会重写它。所以我现在把它指向了正确的目录,它与我的初始代码一样工作。

MyDB的当前值是多少,为什么myFilePath是空的?你不需要打开连接吗?哈……好点的bug…………使用MyDB的当前值是“足球”不是实现
的正确方法文件路径是空的,因为它在默认目录中…也就是说,如果出于某种原因,我必须为DB设置另一个目录的路径。连接字符串正在工作,差不多一年了,我已经用它加载、创建并在表上进行了大量插入,只是没有做任何单一的插入…我将尝试在插入中执行连接字符串,而不是调用函数…如果这是一个问题,那肯定会很奇怪,因为我使用了相同的连接字符串函数来加载(表使用它可以很好地加载),创建并为它执行批量插入已经快一年了,只是从未尝试过一次插入。。。