转载请注明出处:HateMath归来(http://www.cnblogs.com/hatemath/)
环境:
Visual Studio 2017 社区版
64位 Windows 7系统
新建的解决方案基于.Net 4.5.0.0
步骤:
1.下载安装 System.Data.SQLite
主页:http://system.data.sqlite.org/index.html
因为我是64位win7,新建的解决方案基于.Net 4.5.0.0,所以下载的是针对64位、.net4.5的版本,下载地址:
http://system.data.sqlite.org/blobs/1.0.105.2/sqlite-netFx45-setup-x64-2012-1.0.105.2.exe
默认安装路径是:C:\Program Files\System.Data.SQLite
2.用Vb.net新建一个解决方案,基于.net 4.5.0.0
然后放置一个DataGridView,一个Button,属性均默认。
3. 在vb.net中添加对dll的引用
在“解决方案管理器”中,找到工程名称(不是解决方案名称),右键弹出菜单,选择:添加-》引用
然后按图示操作:
4. 输入测试代码
代码引用自 風雲工作室,http://blog.csdn.net/angxiao/article/details/7732018
1 Imports System.Data.SQLite
2 Public Class Form1
3 Dim conn As SQLiteConnection
4 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
5 If System.IO.File.Exists("test.db3") = True Then
6 System.IO.File.Delete("test.db3")
7 End If
8 SQLiteConnection.CreateFile("test.db3")
9 conn = New SQLiteConnection("Data Source=test.db3;Pooling=true;FailIfMissing=false")
10 If conn.State <> ConnectionState.Open Then
11 conn.Open()
12 MsgBox("打开成功!")
13 End If
14
15 Dim cmd As New SQLiteCommand
16 cmd.Connection = conn
17 cmd.CommandText = "CREATE TABLE Test (ID INTEGER PRIMARY KEY,TestName VARCHAR(500),TestTime DateTime,Operator VARCHAR(100))"
18 Dim result As Integer = cmd.ExecuteNonQuery()
19 If result = 0 Then
20 MsgBox("成功")
21 Else
22 MsgBox("失败")
23 End If
24
25 cmd = conn.CreateCommand()
26 cmd.CommandText = "insert into Test(TestName,TestTime,Operator)values(@Name,@TestTime,@Operator)"
27 cmd.Parameters.Add("@Name", Data.DbType.String).Value = "动静"
28 cmd.Parameters.Add("@TestTime", Data.DbType.DateTime).Value = Now()
29 cmd.Parameters.Add("@Operator", Data.DbType.String).Value = "peer"
30 result = cmd.ExecuteNonQuery()
31 If result <> 0 Then
32 MsgBox("插入成功")
33 End If
34 SelectShowInfo()
35
36 '
37 cmd = conn.CreateCommand()
38 cmd.CommandText = "update Test set TestName='动静1'"
39 result = cmd.ExecuteNonQuery()
40 If result <> 0 Then
41 MsgBox("更新成功")
42 End If
43 SelectShowInfo()
44
45 '
46
47 cmd = conn.CreateCommand()
48 cmd.CommandText = "delete from Test"
49 result = cmd.ExecuteNonQuery()
50 If result <> 0 Then
51 MsgBox("删除成功")
52 End If
53 SelectShowInfo()
54
55 cmd.Dispose()
56
57 If conn.State = ConnectionState.Open Then
58 conn.Close()
59 End If
60 End Sub
61
62 Public Sub SelectShowInfo()
63 Dim sa As New SQLiteDataAdapter("select * from Test", conn)
64 Dim ds As New System.Data.DataSet
65 sa.Fill(ds, "Test")
66 Dim mytable As New System.Data.DataTable
67 mytable = ds.Tables("Test")
68 Me.DataGridView1.DataSource = mytable
69 Me.DataGridView1.Refresh()
70 End Sub
71 End Class
5. 第一次运行,单击 Button1,出现异常:
System.DllNotFoundException:“无法加载 DLL“SQLite.Interop.dll”: 找不到指定的模块。
如图:
解决方法:
将C:\Program Files\System.Data.SQLite\2012\bin中的SQLite.Interop.dll和SQLite.Interop.pdb拷贝到工程的debug目录。
6. 第二次运行程序,再次出错:
System.BadImageFormatException:“试图加载格式不正确的程序。
如图:
这就不科学了。明明是一个正常的64位平台的dll文件,为什么说格式不正确呢?
原来,问题出在visual studio的解决方案平台上,默认的是“Any CPU”
我们需要新建一个64位的平台:
并记得把SQLite.Interop.dll和SQLite.Interop.pdb拷贝到工程的bin\x64\debug目录,不然又提示dll找不到了。
7. 第三次运行程序,可以正常的打开数据库,而且成功的插入、修改、删除记录。
完整工程代码:
http://download.csdn.net/download/hatemath/10022030
(完)
转载请注明出处:HateMath归来(http://www.cnblogs.com/hatemath/)