2010-03-05 3 views
4

VB.Net에 대해 배우고 있으며 오픈 소스 System.Data.SQLite ADO.Net 솔루션을 사용하여 SQLite 데이터베이스로 작업해야합니다.트랜잭션 및 매개 변수가있는 INSERT?

HOWTO 섹션에있는 예제는 C#에만 있습니다. VB.Net에서 여러 매개 변수를 INSERT 할 때 트랜잭션을 사용하는 방법을 이해할 수있는 간단한 예제가 있습니까?

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Dim SQLconnect As New SQLite.SQLiteConnection() 
    Dim SQLcommand As SQLite.SQLiteCommand 
    Dim SQLtransaction As SQLite.SQLiteTransaction 

    SQLconnect.ConnectionString = "Data Source=test.sqlite;" 
    SQLconnect.Open() 

    SQLcommand = SQLconnect.CreateCommand 

    SQLcommand.CommandText = "CREATE TABLE IF NOT EXISTS files (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, hash TEXT);" 
    SQLcommand.ExecuteNonQuery() 

     '================ INSERT starts here 
    SQLtransaction = SQLconnect.BeginTransaction() 
    Dim myparam As New SQLite.SQLiteParameter() 

    SQLcommand.CommandText = "INSERT INTO [files] ([name],[hash]) VALUES(?,?)" 

    SQLcommand.Parameters.Add(myparam) 

    'How to set all parameters? myparam.Value 

    SQLcommand.ExecuteNonQuery() 
    SQLtransaction.Commit() 
     '================ INSERT ends here 

    SQLcommand.CommandText = "SELECT id,name,hash FROM files" 
    'How to tell if at least one row? 
    Dim SQLreader As SQLite.SQLiteDataReader = SQLcommand.ExecuteReader() 
    While SQLreader.Read() 
     ListBox1.Items.Add(SQLreader(1)) 
    End While 

    SQLcommand.Dispose() 
    SQLconnect.Close() 
End Sub 

감사합니다 :

FWIW, 여기에 내가 일하고 있어요 코드입니다.


편집 :

SQLtransaction = SQLconnect.BeginTransaction() 
SQLcommand.CommandText = "INSERT INTO files (name,hash) VALUES(@name,@hash)" 
SQLcommand.Parameters.AddWithValue("@name", "myfile") 
SQLcommand.Parameters.AddWithValue("@hash", "123456789") 
SQLcommand.ExecuteNonQuery() 
SQLtransaction.Commit() 

답변

0

트랜잭션 접근 방식은 동일 여러 매개 변수에 관해서는, 당신은 선언해야합니다 (SQLite는 API는 트랜잭션을 지원 제공.)해야합니다 관심있는 사람을 위해, 여기에 몇 가지 작업 코드입니다 각 매개 변수에 대한 SqlParameter 클래스 인스턴스를 만든 다음 각 매개 변수를 쿼리에 추가합니다.

Dim myparam As New SQLite.SQLiteParameter() 
myparam.Value = "Parameter 1's value" 

Dim myparam2 As New SQLite.SQLiteParameter() 
myparam2.Value = "Parameter 2's value" 

SQLcommand.Parameters.Add(myparam) 
SQLcommand.Parameters.Add(myparam2) 

질문에 대해서는 "확인하는 방법 경우 하나 이상의 행"표준 .NET SQLReader의는 "HasRows"속성이 있습니다. 즉

If SQLreader.HasRows Then 
    While SQLreader.Read() 
     ListBox1.Items.Add(SQLreader(1)) 
    End While 
End If 

나는 SQLlite 드라이버를 사용해야한다고 가정합니다.

죄송합니다.이 코드는 VB 코드가 아닌 경우 약 5 년 만에 사용하지 않았습니다.

+0

감사합니다. SQLcommand.Parameters.AddWithValue()를 사용하여 준비된 쿼리에 항목을 추가하는 예제를 발견했습니다. – Gulbahar

+0

아, 항상 "SqlCommand.Parameters.Add (새 SqlParameter (name, value));"를 수행했습니다. - 나 자신을 약간의 타이핑을 구할 수있다 - 고마워. :) –