0

最速のパフォーマンスを得るために、これが 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
4

1 に答える 1

1

前述したように、パラメーター化されたクエリを使用し、例外を飲み込まず、必要に応じてステートメントを使用する適切な方法は、次のようになります。 これは最速の方法ではないことに注意してください

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

理想的には、同じタスクを実行しているタイト ループで例外が発生した場合は、実行を継続しないでください。1 つが失敗すると、すべてが失敗する可能性があります。その場合は、ループ内の try/catch を削除して、for ループにラップする必要があります。

于 2013-09-29T07:44:56.100 に答える