VB.NET连接SQLite数据库的方法
但是SQLite数据库确实是一款很不错的嵌入式数据库,对于日访问量10000是绝对没有问题的。我们可以将它作为软件本地的数据库使用,目的是记录一些不是必需上传数据库的信息,比如登录次数等。这是非常好的。
所以,我们必须使用第三方类库。这里我推荐的是System.Data.SQLite类库,他的支持性比较好。
下载:http://sqlite.phxsoftware.com
下载一个Setup.exe版本即可。其他安装什么的略过。
这里会出现一个问题,就是安装完以后,类库本身的System.Data.SqlClient可能会出现错误,提示指向不明确。没有问题,关闭Visual Studio 2005,重新删除、安装即可。
System.Data.SQLIte提供了一组链接数据库,操作数据库的一组方法,得到的数据库、表本身不能被直接使用(至少我没有尝试出)。所以我们可以使用System.Data.Common下的类库来实现。可以这么理解我今天聚的例子:通过System.Data.Common的DbConnection、System.Data.Common.DbProviderFactory、System.Data.Common.DbTransaction这些熟悉的对象来操作,其他例如链接、插入部分,我们使用SQLite提供的组件。
System.Data.SQLite如何使用?
System.Data.SQLite.SQLiteConnection.CreateFile("DataBase.db") 创建数据库文件。如果有,则不会新建。
这样一来,我们只需要把System.Data.SQLIte.SQLiteFactory.Instance赋值给一个System.Data.Common.DbProviderFactory对象即可。然后其他操作全部基于DbProviderFactory来进行连接、查询、增删改即可。
代码如下:
' 创建数据库文件
'File.Delete("test1.db3")
System.Data.SQLite.SQLiteConnection.CreateFile("test.db")
Dim factory As System.Data.Common.DbProviderFactory = SQLiteFactory.Instance
Using conn As System.Data.Common.DbConnection = factory.CreateConnection()
' Dim conn As System.Data.Common.DbConnection = factory.CreateConnection()
' 连接数据库
conn.ConnectionString = "Data Source=test.db"
conn.Open()
'创建数据表
Dim sql As String = "create table [test1] ([id] INTEGER PRIMARY KEY, [s] TEXT COLLATE NOCASE)"
Dim cmd As DbCommand = conn.CreateCommand()
cmd.Connection = conn
cmd.CommandText = sql
cmd.ExecuteNonQuery()
' 添加参数
cmd.Parameters.Add(cmd.CreateParameter())
' 开始计时
Dim watch As Stopwatch = New Stopwatch()
watch.Start()
Dim trans As DbTransaction = conn.BeginTransaction() ' <-------------------
Try
' 连续插入1000条记录
For i As Integer = 0 To 1000
cmd.CommandText = "insert into [test1] ([s]) values (?)"
cmd.Parameters(0).Value = i.ToString
cmd.ExecuteNonQuery()
Next
cmd.CommandText = "select * from [test1]"
Dim db As DbDataReader = cmd.ExecuteReader()
While db.Read
'TextBoxTest.Text = TextBoxTest.Text & db.Item(0) & " | " & db.Item(1)
End While
trans.Commit() ' <-------------------
Catch ex As Exception
trans.Rollback() ' <-------------------
Throw ' <-------------------
'关闭数据库
conn.close()
End Try
' 停止计时
watch.Stop()
MsgBox(watch.Elapsed.ToString)
End Using
整个代码做的就是生成一个数据库文件,新建一张表,插入1000行记录,并且计算插入的时间是多少。
<-------------------部分是用来特别标注这几句话必需要加上,如果不加的话,数据库则会生成1000个事务,这样会大大影响执行时间。所示事实上每次都建议操作完以后,Commit一下,如果出错,则进行回滚处理。
联系客服