使用 VB.NET 以编程方式创建 ADO.NET SQLite 数据库






4.10/5 (3投票s)
使用 VB.NET 以编程方式创建 ADO.NET SQLite 数据库
引言
本文将向您展示如何使用 VB.NET 以编程方式创建 ADO.NET SQLite 数据库。
我正在使用 ADO.NET Data Provider for SQLite。 来源于 Finisar.SQLite,源代码和二进制 DLL 文件可以从 Finisar.SQLite 网站下载。 此示例使用 x86 二进制文件。
开始一个新项目时,不要忘记导入
SQLite.NET
,在“引用”>“浏览”中添加,然后选择 SQLite.NET.dllSystem.Configuration
,在“引用”>“程序集”>“框架”中添加
不要忘记设置“编译”>“目标 CPU”>“x86”。 万一出现错误,请尝试安装 Microsoft Visual C++ 运行时库。
而且,这个文件必须放入 debug 和 release 文件夹中
- SQLite3.dll
- SQLite.dll
背景
我提出这个想法是因为我的应用程序需要一个数据库。 代码实现对于 Winform 和 ASP.NET 项目来说几乎相同,只需要做一些工作。
Using the Code
所以,让我们开始研究代码吧。
对于完整的源代码,最好下载源代码并查找这些文件
- App.config
- CloudAppSettings.vb
- CloudCreateSQLiteDatabase.vb
我们从 app.config 开始。 这些是添加到 app.config 的几个设置
<appSettings>
<!-- database root-->
<add key="dbroot" value="database"/>
<!-- database root-->
<!-- SQLite Database-->
<!-- Database_Provider-->
<add key="Database_sqlite_Provider" value="Data Source=%mdbfilepath%;Version=3;"/>
<!-- Database_Provider-->
<!-- database_sqlite filename only without extension -->
<add key="Database_sqlite_sample1" value="sample1"/>
<add key="Database_sqlite_sample2" value="sample2"/>
<!-- database_sqlite filename only -->
<!-- SQLite Database-->
</appSettings>
dbroot,是您保存数据库文件的文件夹,只是文件夹名称。 在这种情况下,它是 database
。
<!-- database root-->
<add key="dbroot" value="database"/>
<!-- database root-->
Database_sqlite_Provider
是默认值。
<!-- Database_Provider -->
<add key="Database_sqlite_Provider" value="Data Source=%mdbfilepath%;Version=3;"/>
<!-- Database_Provider -->
命名数据库文件和键。 在这种情况下,键是 Database_sqlite_sample1
,文件名是 sample1
。 您必须在此处添加更多项目,并且您还有另一个数据库文件。
<!-- database_sqlite filename only without extension -->
<add key="Database_sqlite_sample1" value="sample1"/>
<add key="Database_sqlite_sample2" value="sample2"/>
<!-- database_sqlite filename only -->
现在,这是代码。
要创建一个新数据库,您只需要做一行代码。
CloudCreateSQLiteDatabase.CreateNewDatabase(CloudCreateSQLiteDatabase.SQLiteDatabaseType.sample1)
CloudCreateSQLiteDatabase.CreateNewDatabase(CloudCreateSQLiteDatabase.SQLiteDatabaseType.sample2)
但是,在此之前,您需要做一些工作。
步骤 1:添加您的数据库 id。 如果您有 3、4、5 个数据库,只需输入您喜欢的任何名称,例如 sample3=2
。
Public Enum SQLiteDatabaseType
sample1 = 0
sample2 = 1
End Enum
步骤 2:从 app.config 获取数据库文件名以创建有效的文件路径
- dbroot,获取数据库文件夹路径
- 检查路径,如果不存在,则创建它
- 从 App.config 获取数据库文件名
- 创建一个有效的数据库文件路径
Shared Function SQLiteConnDatabaseFilePath(stype As SQLiteDatabaseType) As String
Dim dbroot As String = CloudAppSettings.GetValidDatabaseRoot
Dim dbfilename As String = ""
'check if the db folder not exist then create it
If Directory.Exists(dbroot) = False Then
Directory.CreateDirectory(dbroot)
End If
'get the access file name from app.config
Select Case stype
Case SQLiteDatabaseType.sample1
dbfilename = CloudAppSettings.GetConfigAppSettingsByName("Database_sqlite_sample1")
Case SQLiteDatabaseType.sample2
dbfilename = CloudAppSettings.GetConfigAppSettingsByName("Database_sqlite_sample2")
End Select
dbfilename = String.Format("{0}{1}", dbfilename, ".sqlite")
dbroot = String.Format("{0}{1}", dbroot, dbfilename)
Return dbroot
End Function
步骤 2.1:如果您添加了任何新数据库,则只需要更改此部分。
Select Case stype
Case SQLiteDatabaseType.sample1
dbfilename = CloudAppSettings.GetConfigAppSettingsByName("Database_sqlite_sample1")
Case SQLiteDatabaseType.sample2
dbfilename = CloudAppSettings.GetConfigAppSettingsByName("Database_sqlite_sample2")
End Select
步骤 3:如果您的 SQLiteDatabaseType Enum
包含 SQLiteDatabaseType.sample3
,则编写数据库表命令,因此您必须为此编写一些内容。
注意:自动递增在这里实际上不起作用。
Shared Function CommandString(DatabaseType As SQLiteDatabaseType) As ArrayList
Dim result As New ArrayList
Select Case DatabaseType
Case SQLiteDatabaseType.sample1
result.Add("CREATE TABLE sample1 ([id] COUNTER IDENTITY(1,1), _
[samplename] LONGTEXT,[sampleid] LONG, [samplevalue] LONG, PRIMARY KEY (id))")
Case SQLiteDatabaseType.sample2
result.Add("CREATE TABLE sample2 ([id] COUNTER IDENTITY(1,1), _
[file_path] LONGTEXT,[file_extension] LONGTEXT ,[file_date] DATETIME, _
[file_name] LONGTEXT, PRIMARY KEY (id))")
result.Add("CREATE TABLE sample3 ([id] COUNTER IDENTITY(1,1), _
[file_path] LONGTEXT,[file_extension] LONGTEXT ,[file_date] DATETIME, _
[file_name] LONGTEXT, PRIMARY KEY (id))")
End Select
Return result
End Function
步骤 4:从 App.config 获取 SQLite 连接设置
Shared Function SQLiteConnSettings(stype As SQLiteDatabaseType) As String
Dim dbroot As String = SQLiteConnDatabaseFilePath(stype)
Dim returnvalue As String = CloudAppSettings.GetConfigAppSettingsByName("Database_sqlite_Provider").Trim
returnvalue = returnvalue.Replace("%mdbfilepath%", dbroot)
Return returnvalue
End Function
所以,现在您理解了一点吗?
核心
以上所有准备工作都是为了这段代码。
- 获取数据库文件路径。
- 获取连接字符串。
- 创建
SQLiteConnection
- 检查数据库是否已存在。
- 创建数据库表,一个或多个表。
- 完成
- 如果出错,关闭
SQLiteConnection
并删除数据库文件。
Public Shared Sub CreateNewDatabase(DatabaseType As SQLiteDatabaseType)
Dim dbfile As String = SQLiteConnDatabaseFilePath(DatabaseType)
Dim con As String = SQLiteConnSettings(DatabaseType)
'Note - use New=True to create a new database
Dim conn As SQLiteConnection = New SQLiteConnection(con & "New=True;")
Try
If File.Exists(dbfile) = True Then
'database already exist
Else
If CommandString(DatabaseType).Count > 1 Then
conn.Open()
For items = 0 To CommandString(DatabaseType).Count - 1
Dim cmdCreate As New SQLiteCommand
With cmdCreate
.Connection = conn
.CommandText = CommandString(DatabaseType).Item(items).ToString
End With
cmdCreate.ExecuteNonQuery()
Next
conn.Close()
Else
Dim cmdCreate As New SQLiteCommand
With cmdCreate
.Connection = conn
.CommandText = CommandString(DatabaseType).Item(0).ToString
End With
conn.Open()
cmdCreate.ExecuteNonQuery()
conn.Close()
End If
End If
Catch ex As SQLiteException
conn.Close()
'delete the failed database
File.Delete(dbfile)
MsgBox(ex.Message, MsgBoxStyle.Exclamation, "SQLiteException")
End Try
End Sub
关注点
阅读本教程后,您可以参考 使用 VB.NET 以编程方式创建 Access 数据库,无需 Microsoft Office。
历史
- 2014 年 8 月 31 日:初始版本