Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net net及其在SQLite中的应用_Vb.net_Sqlite - Fatal编程技术网

Vb.net net及其在SQLite中的应用

Vb.net net及其在SQLite中的应用,vb.net,sqlite,Vb.net,Sqlite,我只是想确保这是使用SQLite以获得最快性能的正确代码 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim cons As New SQLite.SQLiteConnection cons.ConnectionString = "Data Source=C:\database.s3db; Version=3" cons.Open

我只是想确保这是使用SQLite以获得最快性能的正确代码

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim cons As New SQLite.SQLiteConnection
        cons.ConnectionString = "Data Source=C:\database.s3db; Version=3"
        cons.Open()

        Using tx = cons.BeginTransaction()

            Dim cmd As SQLite.SQLiteCommand
            cmd = cons.CreateCommand()

            For i As Integer = 0 To 1000
                Try
                    cmd.CommandText = "INSERT INTO table1 VALUES('" & i & "')"
                    cmd.ExecuteNonQuery()
                Catch ex As Exception
                End Try
            Next

            tx.Commit()
            cmd.Dispose()
        End Using

        cons.Close()
End Sub

正如我所提到的,使用参数化查询、不接受异常以及在必要时使用语句来实现这一点的正确方法是这样的。 请注意,这不是最快的方法


理想情况下,如果执行相同任务的紧密循环中出现异常,则不应继续执行。如果一个人失败了,那么一切都有可能失败。因此,在这种情况下,您应该删除循环中的try/catch,并将其包裹在for循环上。

这个问题不需要
c
标记。已删除。我不知道这是否是为了获得最佳性能,但还有一些需要改进的地方。1) 使用参数化查询,2)不要吞下异常(报告给用户或至少记录它)3)在使用block时包装连接和命令一些示例会很好,SriramI可以举个例子,但这并不是这个特定问题的答案,因为您要求的是最快的性能。我将为您链接一些问题。检查数据库调用的正确使用。在这里。我假设您知道如何处理异常:)还有一件事,当您想要通知某个用户时,您必须像这样使用@XK8ER。使用(@)。您正在使用SqlConnection,而我正在使用SQLite.SQLiteConnection。我什么时候关闭连接并进行处理和其他操作?是的,将所有与Sql相关的内容都更改为SqlLite。例如:
SqlCommand
SqlLiteCommand
。您不需要关闭连接
Dispose
将处理该问题。当控件离开时,会自动调用
Dispose
,使用block我做了这些更改并运行了代码,没有出现错误,但数据库文件保持不变。。我在打开之前加了这个
conn.ConnectionString=“Data Source=C:\Data.s3db;Version=3”
尝试添加准确的列名,而不是像这样添加@columnname
cmd.CommandText=“插入到表1值(@table1)”cmd.Parameters.AddWithValue(@table1”,i)
Private Sub InsertRows()
    Using conn As New SqlConnection
        conn.Open()
        Using tx = conn.BeginTransaction()
            For i As Integer = 0 To 1000
                Using cmd = conn.CreateCommand() 'Proper using statements wherever necessary
                    Try
                        cmd.CommandText = "INSERT INTO table1 VALUES(@ColumnName)" 'Paramertized queries
                        cmd.Parameters.AddWithValue("@ColumnName", i)
                        cmd.ExecuteNonQuery()
                    Catch ex As Exception
                        logger.ErrorException(ex) 'Logging the exception or shoe messagebox
                    End Try
                End Using
            Next
        End Using
    End Using
End Sub