澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

语言建立本地数据库,NET中自适应32位

2019-05-19 作者:www.8455.com   |   浏览(125)

本文属于原创,转发请证明出处,多谢!

转载原文出处:http://zhoufoxcn.blog.51cto.com/792419/292670

        假如三个.NET应用要自适应3九位/陆12个人系统,只需求在类型的“目的平台”设置为“Any CPU”。可是只要运用中利用了SQLite,意况就分化了。

iOS开拓:Unity3D 使用C#语言创设地点数据库

澳门新萄京官方网站,   首先你必要获得Mono.Data.Sqlite.dll 文件 与System.Data.dll文件。倘让你在Mac 操作系统下使用Unity那么很正剧,找不到那多少个文件,至少本身没能找到。后来本身在Windows下的Unity安装路线中找到了它。为了有利于大家本身将那两个文件上传至网盘中,如果未有那八个文本的相恋的人请下载。Unity数据库文件.zip

  .zip文件下载实现后平昔解压,然后将Mono.Data.Sqlite.dll 文件 与System.Data.dll文件放在Unity工程中的Assets文件夹中。如下图所示,多个文件已经停放在Project视图当中。

澳门新萄京官方网站 1

  Ok ,大家编写C#本子,原始小说没有Unity数据库更新与删除的办法,笔者在这边丰裕更新与删除的点子,方便我们付出时选拔。因为其实Unity中革新与删除数据库也是个相比根本的效益。

  注意:下边脚本不要绑定在别的游戏对象身上,大家无需把它当作脚本能够当作1个工具类来行使。

  [代码]java代码:

001 using UnityEngine;
002  
003 using System;
004 using System.Collections;
005 using Mono.Data.Sqlite;
006  
007 public class DbAccess
008  
009 {
010  
011 private SqliteConnection dbConnection;
012  
013 private SqliteCommand dbCommand;
014  
015 private SqliteDataReader reader;
016  
017 public DbAccess (string connectionString)
018  
019 {
020  
021 OpenDB (connectionString);
022  
023 }
024 public DbAccess ()
025 {
026  
027 }
028  
029 public void OpenDB (string connectionString)
030  
031 {
032 try
033 {
034 dbConnection = new SqliteConnection (connectionString);
035  
036 dbConnection.Open ();
037  
038 Debug.Log ("Connected to db");
039 }
040 catch(Exception e)
041 {
042 string temp1 = e.ToString();
043 Debug.Log(temp1);
044 }
045  
046 }
047  
048 public void CloseSqlConnection ()
049  
050 {
051  
052 if (dbCommand != null) {
053  
054 dbCommand.Dispose ();
055  
056 }
057  
058 dbCommand = null;
059  
060 if (reader != null) {
061  
062 reader.Dispose ();
063  
064 }
065  
066 reader = null;
067  
068 if (dbConnection != null) {
069  
070 dbConnection.Close ();
071  
072 }
073  
074 dbConnection = null;
075  
076 Debug.Log ("Disconnected from db.");
077  
078 }
079  
080 public SqliteDataReader ExecuteQuery (string sqlQuery)
081  
082 {
083  
084 dbCommand = dbConnection.CreateCommand ();
085  
086 dbCommand.CommandText = sqlQuery;
087  
088 reader = dbCommand.ExecuteReader ();
089  
090 return reader;
091  
092 }
093  
094 public SqliteDataReader ReadFullTable (string tableName)
095  
096 {
097  
098 string query = "SELECT * FROM " tableName;
099  
100 return ExecuteQuery (query);
101  
102 }
103  
104 public SqliteDataReader InsertInto (string tableName, string[] values)
105  
106 {
107  
108 string query = "INSERT INTO " tableName " VALUES (" values[0];
109  
110 for (int i = 1; i < values.Length; i) {
111  
112 query = ", " values[i];
113  
114 }
115  
116 query = ")";
117  
118 return ExecuteQuery (query);
119  
120 }
121  
122 public SqliteDataReader UpdateInto (string tableName, string []cols,string []colsvalues,string selectkey,string selectvalue)
123 {
124  
125 string query = "UPDATE " tableName " SET " cols[0] " = " colsvalues[0];
126  
127 for (int i = 1; i < colsvalues.Length; i) {
128  
129 query = ", " cols[i] " =" colsvalues[i];
130 }
131  
132 query = " WHERE " selectkey " = " selectvalue " ";
133  
134 return ExecuteQuery (query);
135 }
136  
137 public SqliteDataReader Delete(string tableName,string []cols,string []colsvalues)
138 {
139 string query = "DELETE FROM " tableName " WHERE " cols[0] " = " colsvalues[0];
140  
141 for (int i = 1; i < colsvalues.Length; i) {
142  
143 query = " or " cols[i] " = " colsvalues[i];
144 }
145 Debug.Log(query);
146 return ExecuteQuery (query);
147 }
148  
149 public SqliteDataReader InsertIntoSpecific (string tableName, string[] cols, string[] values)
150  
151 {
152  
153 if (cols.Length != values.Length) {
154  
155 throw new SqliteException ("columns.Length != values.Length");
156  
157 }
158  
159 string query = "INSERT INTO " tableName "(" cols[0];
160  
161 for (int i = 1; i < cols.Length; i) {
162  
163 query = ", " cols[i];
164  
165 }
166  
167 query = ") VALUES (" values[0];
168  
169 for (int i = 1; i < values.Length; i) {
170  
171 query = ", " values[i];
172  
173 }
174  
175 query = ")";
176  
177 return ExecuteQuery (query);
178  
179 }
180  
181 public SqliteDataReader DeleteContents (string tableName)
182  
183 {
184  
185 string query = "DELETE FROM " tableName;
186  
187 return ExecuteQuery (query);
188  
189 }
190  
191 public SqliteDataReader CreateTable (string name, string[] col, string[] colType)
192  
193 {
194  
195 if (col.Length != colType.Length) {
196  
197 throw new SqliteException ("columns.Length != colType.Length");
198  
199 }
200  
201 string query = "CREATE TABLE " name " (" col[0] " " colType[0];
202  
203 for (int i = 1; i < col.Length; i) {
204  
205 query = ", " col[i] " " colType[i];
206  
207 }
208  
209 query = ")";
210  
211 return ExecuteQuery (query);
212  
213 }
214  
215 public SqliteDataReader SelectWhere (string tableName, string[] items, string[] col, string[] operation, string[] values)
216  
217 {
218  
219 if (col.Length != operation.Length || operation.Length != values.Length) {
220  
221 throw new SqliteException ("col.Length != operation.Length != values.Length");
222  
223 }
224  
225 string query = "SELECT " items[0];
226  
227 for (int i = 1; i < items.Length; i) {
228  
229 query = ", " items[i];
230  
231 }
232  
233 query = " FROM " tableName " WHERE " col[0] operation[0] "'" values[0] "' ";
234  
235 for (int i = 1; i < col.Length; i) {
236  
237 query = " AND " col[i] operation[i] "'" values[0] "' ";
238  
239 }
240  
241 return ExecuteQuery (query);
242  
243 }
244  
245 }

  首先是创立本地数据库,大家创设C#脚本Test.cs间接绑定在录像机中。

  [代码]java代码:

01 using UnityEngine;
02 using System.Collections;
03  
04 public class Test : MonoBehaviour
05 {
06  
07 void Start ()
08 {
09  
10 //创建数据库名称为xuanyusong.db
11 DbAccess db = new DbAccess("data source=xuanyusong.db");
12  
13 //创建数据库表,与字段
14 db.CreateTable("momo",new string[]{"name","qq","email","blog"}, new string[]{"text","text","text","text"});
15 //关闭对象
16 db.CloseSqlConnection();
17 }
18  
19 }

  运转游戏后,数据库对象会自动生成在项指标根目录中。查看数据库的软件自个儿动用的是Navicat Premium,要是没有请大家下载,然后继续。如下图所示,数据库文件xuanyusong.db已经变化在类型的根目录中,接着笔者动用Navicat Premium软件将那么些数据库张开。数据库的表名字为momo 张开表后字段包涵name、 qq 、email、 blog。都以大家在代码中开创的。

澳门新萄京官方网站 2

  OK,大家继续。首先是插入数据,记得将编码修改成UTF-1陆不然普通话会乱码。

  [代码]java代码:

01 using UnityEngine;
02 using System.Collections;
03  
04 public class Test : MonoBehaviour
05 {
06  
07 void Start ()
08 {
09  
10 //创建数据库名称为xuanyusong.db
11 DbAccess db = new DbAccess("data source=xuanyusong.db");
12 //请注意 插入字符串是 已经要加上'宣雨松' 不然会报错
13 db.InsertInto("momo", new string[]{ "'宣雨松'","'289187120'","'[email protected]'","'www.xuanyusong.com'" });
14 db.CloseSqlConnection();
15 }
16  
17 }

  接着是翻新数据。UpdateInto是自己新写的章程,接受革新多条数据。

  [代码]java代码:

01 using UnityEngine;
02 using System.Collections;
03  
04 public class Test : MonoBehaviour
05 {
06  
07 void Start ()
08 {
09  
10 //创建数据库名称为xuanyusong.db
11 DbAccess db = new DbAccess("data source=xuanyusong.db");
12  
13 db.UpdateInto("momo",new string[]{"name","qq"},new string[]{"'xuanyusong'","'11111111'"}, "email", "'[email protected]'" );
14  
15 db.CloseSqlConnection();
16 }
17  
18 }

  然后是去除数据DELETE也是自家封装的格局。

  [代码]java代码:

01 using UnityEngine;
02 using System.Collections;
03  
04 public class Test : MonoBehaviour
05 {
06  
07 void Start ()
08 {
09  
10 //创建数据库名称为xuanyusong.db
11 DbAccess db = new DbAccess("data source=xuanyusong.db");
12 //请注意 插入字符串是 已经要加上'宣雨松' 不然会报错
13 db.CreateTable("momo",new string[]{"name","qq","email","blog"}, new string[]{"text","text","text","text"});
14 //我在数据库中连续插入三条数据
15 db.InsertInto("momo", new string[]{ "'宣雨松'","'289187120'","'[email protected]'","'www.xuanyusong.com'" });
16 db.InsertInto("momo", new string[]{ "'雨松MOMO'","'289187120'","'[email protected]'","'www.xuanyusong.com'" });
17 db.InsertInto("momo", new string[]{ "'哇咔咔'","'289187120'","'[email protected]'","'www.xuanyusong.com'" });
18  
19 //然后在删掉两条数据
20 db.Delete("momo",new string[]{"email","email"}, new string[]{"'[email protected]'","'[email protected]'"} );
21  
22 db.CloseSqlConnection();
23 }
24  
25 }

  最后是查究数据。

  [代码]java代码:

01 using UnityEngine;
02 using System.Collections;
03  
04 using Mono.Data.Sqlite;
05 public class Test : MonoBehaviour
06 {
07  
08 void Start ()
09 {
10  
11 //创建数据库名称为xuanyusong.db
12 DbAccess db = new DbAccess("data source=xuanyusong.db");
13 //请注意 插入字符串是 已经要加上'宣雨松' 不然会报错
14 db.CreateTable("momo",new string[]{"name","qq","email","blog"}, new string[]{"text","text","text","text"});
15 //我在数据库中连续插入三条数据
16 db.InsertInto("momo", new string[]{ "'宣雨松'","'289187120'","'[email protected]'","'www.xuanyusong.com'" });
17 db.InsertInto("momo", new string[]{ "'雨松MOMO'","'289187120'","'[email protected]'","'www.xuanyusong.com'" });
18 db.InsertInto("momo", new string[]{ "'哇咔咔'","'289187120'","'[email protected]'","'www.xuanyusong.com'" });
19  
20 //然后在删掉两条数据
21 db.Delete("momo",new string[]{"email","email"}, new string[]{"'[email protected]'","'[email protected]'"} );
22  
23 //注解1
24 SqliteDataReader sqReader = db.SelectWhere("momo",new string[]{"name","email"},new string[]{"qq"},new string[]{"="},new string[]{"289187120"});
25  
26 while (sqReader.Read())
27 {
28 Debug.Log(sqReader.GetString(sqReader.GetOrdinal("name")) sqReader.GetString(sqReader.GetOrdinal("email")));
29 }
30  
31 db.CloseSqlConnection();
32 }
33  
34 }

  注解壹:这里的结构极其像安卓的数据库指针,然后while循环把每一条数据都抽出来。 sqReader.Gerordinal()方法正是获得对应列名称的数目。如下图所示,经过一些列的增加与删除的操作最后数据库的从头到尾的经过如下。

澳门新萄京官方网站 3

  如下图所示,笔者动用Log也将数据库name 与 email的字段打字与印刷了出去。最终我在强调一点,大家在OnStart方法中db.CreateTable创设数量库表,若是重复创立系统会抛出错误。防止这么些情形请保管你的数据库表只会被成立一遍。祝大家学习欢娱嘎嘎嘎~~~

澳门新萄京官方网站 4

  如下图所示,请先在PlaySettings中期维修改Api Compatibility Level 改成.NET 二.0,假使不修改会报错

  注意:Error building Player: Extracting referenced dlls failed.

  无论你编写翻译任何平台都请修改一下那边, 留言中有意中人在编写翻译PC平高雄因为未有改换这里导致力不从心编写翻译成功。。

澳门新萄京官方网站 5

  IOS平台SQLite的使用:

  然后须求修改Test.cs的本子,在退换一下数据库保存的门路,大家将数据库放在沙盒个中。那样IOS中才得以读取数据库。

  [代码]java代码:

01 using UnityEngine;
02 using System.Collections;
03  
04 using Mono.Data.Sqlite;
05 public class Test : MonoBehaviour
06 {
07  
08 void Start ()
09 {
10 //数据库文件储存地址
11 string appDBPath = Application.persistentDataPath "/xuanyusong.db";
12  
13 DbAccess db = new DbAccess(@"Data Source=" appDBPath);
14  
15 //请注意 插入字符串是 已经要加上'宣雨松' 不然会报错
16 db.CreateTable("momo",new string[]{"name","qq","email","blog"}, new string[]{"text","text","text","text"});
17 //我在数据库中连续插入三条数据
18 db.InsertInto("momo", new string[]{ "'宣雨松'","'289187120'","'[email protected]'","'www.xuanyusong.com'" });
19 db.InsertInto("momo", new string[]{ "'雨松MOMO'","'289187120'","'[email protected]'","'www.xuanyusong.com'" });
20 db.InsertInto("momo", new string[]{ "'哇咔咔'","'289187120'","'[email protected]'","'www.xuanyusong.com'" });
21  
22 //然后在删掉两条数据
23 db.Delete("momo",new string[]{"email","email"}, new string[]{"'[email protected]'","'[email protected]'"} );
24  
25 //注解1
26 using (SqliteDataReader sqReader = db.SelectWhere("momo",new string[]{"name","email"},new string[]{"qq"},new string[]{"="},new string[]{"289187120"}))
27 {
28  
29 while (sqReader.Read())
30 {
31 //目前中文无法显示
32 Debug.Log(sqReader.GetString(sqReader.GetOrdinal("name")));
33  
34 Debug.Log(sqReader.GetString(sqReader.GetOrdinal("email")));
35  
36 }
37  
38 sqReader.Close();
39 }
40  
41 db.CloseSqlConnection();
42 }
43  
44 }

  下边开头打包成IOS版本,直接运营如下图所示,已经在XCODE的调控台少将字符串消息打字与印刷出来。近来本人不驾驭怎么着读取中文,可是能够规定的是粤语消息曾经写入数据库中。不信我们能够张开沙盒看看。

澳门新萄京官方网站 6

  Android平台SQLite的使用:

  Android与IOS在使用SQLite数据库时有一点分歧,Android须要将第二方DLL放在Plugins个中。脚本也必要修改一下,先看看Test.cs的变动。

  [代码]java代码:

01 using UnityEngine;
02 using System.Collections;
03  
04 using Mono.Data.Sqlite;
05 public class Test : MonoBehaviour
06 {
07  
08 void Start ()
09 {
10 //数据库文件储存地址
11  
12 string appDBPath = Application.persistentDataPath "/xuanyusong.db";
13  
14 //注意!!!!!!!这行代码的改动
15 DbAccess db = new DbAccess("URI=file:" appDBPath);
16  
17 //请注意 插入字符串是 已经要加上'宣雨松' 不然会报错
18 db.CreateTable("momo",new string[]{"name","qq","email","blog"}, new string[]{"text","text","text","text"});
19 //我在数据库中连续插入三条数据
20 db.InsertInto("momo", new string[]{ "'宣雨松'","'289187120'","'[email protected]'","'www.xuanyusong.com'" });
21 db.InsertInto("momo", new string[]{ "'雨松MOMO'","'289187120'","'[email protected]'","'www.xuanyusong.com'" });
22 db.InsertInto("momo", new string[]{ "'哇咔咔'","'289187120'","'[email protected]'","'www.xuanyusong.com'" });
23  
24 //然后在删掉两条数据
25 db.Delete("momo",new string[]{"email","email"}, new string[]{"'[email protected]'","'[email protected]'"} );
26  
27 //注解1
28 using (SqliteDataReader sqReader = db.SelectWhere("momo",new string[]{"name","email"},new string[]{"qq"},new string[]{"="},new string[]{"289187120"}))
29 {
30  
31 while (sqReader.Read())
32 {
33 Debug.Log("xuanyusong" sqReader.GetString(sqReader.GetOrdinal("name")));
34  
35 Debug.Log("xuanyusong" sqReader.GetString(sqReader.GetOrdinal("email")));
36  
37 }
38  
39 sqReader.Close();
40 }
41  
42 db.CloseSqlConnection();
43 }
44  
45 void Update()
46 {
47 if (Input.GetKeyDown(KeyCode.Escape) ||Input.GetKeyDown(KeyCode.Home) )
48 {
49  
50 Application.Quit();
51 }
52 }
53  
54 }

  如下图所示,Player Settings 请和本身保持1致。

澳门新萄京官方网站 7

  值得庆幸的是在Android下读取数据库时不荒谬的来得了普通话。如下图所示,运转打包后的顺序后在Eclipse的后台已经能看出数据库展现的中文与英文,呵呵。

澳门新萄京官方网站 8

  由于工程中必要部分DLL,所以本身将工程的下载地址放出,请大家下载。AndroidSQL.unitypackage.zip

  MAC平台下的施用:

  请先下载原始版本 SQLite (壹).unitypackage.zip

  我们只需在原来版本之上进行改换就能够。

  修改Test.cs文件 ,请留心自个儿在代码中标注的内容。

  [代码]java代码:

01 using UnityEngine;
02 using System.Collections;
03  
04 using Mono.Data.Sqlite;
05 public class Test : MonoBehaviour
06 {
07  
08 string name = null;
09 string email = null;
10 string appDBPath = null;
11 void Start ()
12 {
13  
14 //////////--------
15 //请注意!!!!!!!
16 //这里的修改
17  
18 appDBPath = Application.dataPath "/xuanyusong.db";
19  
20 DbAccess db = new DbAccess(@"Data Source=" appDBPath);
21  
22 //////////--------
23  
24 //请注意 插入字符串是 已经要加上'宣雨松' 不然会报错
25 db.CreateTable("momo",new string[]{"name","qq","email","blog"}, new string[]{"text","text","text","text"});
26 //我在数据库中连续插入三条数据
27 db.InsertInto("momo", new string[]{ "'宣雨松'","'289187120'","'[email protected]'","'www.xuanyusong.com'" });
28 db.InsertInto("momo", new string[]{ "'雨松MOMO'","'289187120'","'[email protected]'","'www.xuanyusong.com'" });
29 db.InsertInto("momo", new string[]{ "'哇咔咔'","'289187120'","'[email protected]'","'www.xuanyusong.com'" });
30  
31 //然后在删掉两条数据
32 db.Delete("momo",new string[]{"email","email"}, new string[]{"'[email protected]'","'[email protected]'"} );
33  
34 SqliteDataReader sqReader = db.SelectWhere("momo",new string[]{"name","email"},new string[]{"qq"},new string[]{"="},new string[]{"289187120"});
35  
36 while (sqReader.Read())
37 {
38  
39 Debug.Log(sqReader.GetString(sqReader.GetOrdinal("name")) sqReader.GetString(sqReader.GetOrdinal("email")));
40  
41 //取值
42 name = sqReader.GetString(sqReader.GetOrdinal("name"));
43 email = sqReader.GetString(sqReader.GetOrdinal("email"));
44 }
45  
46 db.CloseSqlConnection();
47 }
48  
49 void OnGUI()
50 {
51  
52 ///为了让大家看的更清楚 我将数据库取出的内容显示在屏幕中
53 if(name != null)
54 {
55 GUILayout.Label("XXXXXXXXXXXXX" name);
56  
57 }
58  
59 if (email!= null)
60 {
61 GUILayout.Label("XXXXXXXXXXXXX" email);
62 }
63  
64 if(appDBPath != null)
65 {
66 GUILayout.Label("数据库的路径" appDBPath);
67 }
68  
69 }
70  
71 }

  生成工程后,运营生成的mac程序,大家能够见到 数据现已抽取来了。

澳门新萄京官方网站 9

  Windows平台SQLite的使用:

  Windows平台下与Mac平台有一点不一样,废了老半天来找到难题所在。MOMO谢谢在博客前边留言的朋友,因为尚未你们的留言笔者也不会去商讨MAC Windows下什么利用 呵呵。

  进入正题,依旧先修改Test.cs文件

  [代码]java代码:

01 using System.Collections;
02  
03 using Mono.Data.Sqlite;
04  
05 //using Mono.Data.SqliteClient;
06  
07 public class Test : MonoBehaviour
08 {
09  
10 string name = null;
11 string email = null;
12 string path = null;
13  
14 void Start ()
15 {
16 //数据库文件储存地址
17  
18 //注意这里的修改!!!!!!!!!!!!!!
19 string appDBPath = Application.dataPath "/xuanyusong.db";
20  
21 //--------------------------
22  
23 DbAccess db = new DbAccess(@"Data Source=" appDBPath);
24  
25 path = appDBPath;
26  
27 //请注意 插入字符串是 已经要加上'宣雨松' 不然会报错
28 db.CreateTable("momo",new string[]{"name","qq","email","blog"}, new string[]{"text","text","text","text"});
29 //我在数据库中连续插入三条数据
30 db.InsertInto("momo", new string[]{ "'宣雨松'","'289187120'","'[email protected]'","'www.xuanyusong.com'" });
31 db.InsertInto("momo", new string[]{ "'雨松MOMO'","'289187120'","'[email protected]'","'www.xuanyusong.com'" });
32 db.InsertInto("momo", new string[]{ "'哇咔咔'","'289187120'","'[email protected]'","'www.xuanyusong.com'" });
33  
34 //然后在删掉两条数据
35 db.Delete("momo",new string[]{"email","email"}, new string[]{"'[email protected]'","'[email protected]'"} );
36  
37 //注解1
38 using (SqliteDataReader sqReader = db.SelectWhere("momo",new string[]{"name","email"},new string[]{"qq"},new string[]{"="},new string[]{"289187120"}))
39 {
40  
41 while (sqReader.Read())
42 {
43 //目前中文无法显示
44 Debug.Log("xuanyusong" sqReader.GetString(sqReader.GetOrdinal("name")));
45  
46 Debug.Log("xuanyusong" sqReader.GetString(sqReader.GetOrdinal("email")));
47  
48 name = sqReader.GetString(sqReader.GetOrdinal("name"));
49 email = sqReader.GetString(sqReader.GetOrdinal("email"));
50  
51 }
52  
53 sqReader.Close();
54 }
55  
56 db.CloseSqlConnection();
57 }
58  
59 void OnGUI()
60 {
61 if(name != null)
62 {
63 GUILayout.Label(name);
64 }
65  
66 if(email != null)
67 {
68 GUILayout.Label(email);
69 }
70  
71 if(path != null)
72 {
73 GUILayout.Label(path);
74 }
75 }
76  
77 }

  如下图所示张开Unity然后我们须求下载sqlite三.dll文件,接着将dll都放入Plugins文件夹中。不用操心 稍后本人会把真的工程的下载地址贴出来其中包涵富有的dll 。

澳门新萄京官方网站 10

  最终直接打包成Windows平台工程。双击运转.exe文件,如下图所示数据库的数额以及路径MOMO已经打字与印刷在荧屏中间啦。哇咔咔~ 然后xuanyusong.db文件就坐落ddd_Date文件夹中,我曾经用红圈标注出来了。ddd就是工程的称谓,ddd_Date该公文夹是自动生成的。

澳门新萄京官方网站 11

使用C#语言创立地点数据库 首先你必要获得Mono.Data.Sqlite.dll 文件 与System.Data.dll文件。借使你在Mac 操作系统下利用Unity那么...

1、开采条件

 

 

操作系统:Windows 10 X6四

SQLite介绍
在介绍System.Data.SQLite以前需求介绍一下SQLite,SQLite是二个像样于Access的单机版数据库处理种类,它将具有数据库的概念(包涵定义、表、索引和数码本人)都保留在2个纯净的文本中。并且,SQLite是三个用C实现的类库,它在内部存款和储蓄器消耗、文件体量、简单性方面都有不错的显现,若是数据在十W条以下,查询速度也是卓殊快的。
SQLite具备以下特征:
福寿绵绵繁多SQL九二的标准,包涵专业(原子性、一致性、隔断性和长久性)、触发器和许多的头晕目眩查询。
畸形插入或然更新的多寡开始展览项目检查,你能够将字符串插入到整数列中(这些只怕让多少用户不太适应)。
帮衬Windows/Linux/Unix等主流系统,还帮助嵌入式系统如Android或Windows Mobile。
System.Data.SQLite System.Data.SQLite是SQLite的抓好版,它能够不须求.NET Framework匡助,由于它当中含有了1个ADO.NET 二.0引擎,所以.NET开垦职员能够采用System.Data.SQLite方便地开垦.NET程序。
System.Data.SQLite及SQLite也会有一对限量,举个例子不支持行级及表级锁,当三个连连锁定数据库以用来写入数据,别的的数据库连接只能等待那一个连接操作完毕今后进展读写操作,SQLite.NET尝试在超时代内多次尝试。
事实上对于大型的使用大家都会挑选一些巨型专门的职业的数据库,System.Data.SQLite和SQLite适合于有个别受限的场子,比方手提式有线电话机等。在这里作者讲二个真真的经历,在此前自个儿曾经做过八个微型系统,要深入分析八个Excel文件,当中八个的记录差不离在400条左右,而除此以外3个光景是1万条左右,对于这么三个系统1旦运用数据库,即便单机版的Access,导入之后选拔数据库的特色开展分析,将是三个相对较为轻松的事情,因为大家得以在数据Curry应用连接查询,仍是能够对记录使用数据库函数,不过对方提供的消息是布局的机械上就算安装了Office,可是只是安装了Word、Excel和Outlook,而从未Access,对方也不期待安装别的的软件,由于自个儿也不能够明显未有安装Access的机械上是还是不是能透过奥莱DB访问.mdb文件,所以未有章程,唯有才有内部存款和储蓄器表的情势,将要Excel中的数据读取到DataTable中,然后对八个DataTable进行分析,就算做了过多优化,然而效能照旧不是太优秀。对于这种景观,假诺本人马上领会System.Data.SQLite就好办多了,将四个Excel中的数据导入到System.Data.SQLite中,然后利用System.Data.SQLite提供的函数管理起来是1对1省事和便利的。对于System.Data.SQLite来讲,铺排时无需安装,仅必要3个System.Data.SQLite.dll就够了,这几个dll仅86陆K!而且它没有须要像使用Com组件那样须要注册。
在VS2008中操作System.Data.SQLite
为了方便开拓者,System.Data.SQLite提供了VS2005和VS200玖的协助,以至还帮衬.NET 3.5 SP第11中学的Entity Framework,下边是在VS二零零六中使用System.Data.SQLite设计器的情形:
先是展开VS二零一零中的服务器能源管理器,如下图:
澳门新萄京官方网站 12 
接着在数额连接上点击鼠标右键,如下图所示:
澳门新萄京官方网站 13 
接下来选拔“增多连接”,如下图所示:
澳门新萄京官方网站 14 
那会儿选拔System.Data.SQLite使用的数据库文件,文件后缀暗中同意是.db三,还足以点击下方的“测试连接”开关,要是没有万分态就能够弹出科学的对话框,点击“鲜明”按键之后在服务器能源管理器中就能油但是生如下的状态:
澳门新萄京官方网站 15 
这么我们就能够像操作SQL Server中的库同样操作System.Data.SQLite中的表了。
System.Data.SQLite数据库通用类
针对对数据库的操作景况,分为以下二种情景:
创办数据库文件;
返回DataTable;
返回DataReader;
施行增加和删除改,再次回到受影响的行数;
实行查询,重返第2行第二列(平常用于带有行函数的查询,如SUM/AVG/COUNT等);
回到库中存有的表;
因为在System.Data.SQLite中不存在存款和储蓄进程,所以具备的操作皆以基于文本的SQL语句,为了制止SQL注入,所以使用了参数化的SQL语句,这几个数据库通用类如下:

   SQLite的.NET开垦包来自是System.Data.SQLite,完结包容ADO.NET接口,也提供了Linq和Entity Framework 陆完成。但那不主要,主要的是System.Data.SQLite是由两片段代码组成的,壹部分是非托管的C 代码落成,壹部分是托管代码与.NET 框架接口。由于非托管代码无法营形成“Any CPU”的,所以System.Data.SQLite的下载页面包车型地铁每种包都是按三拾贰人或陆1四人系统实行了界别的。

付出景况:VS20壹五

using System;  
using System.Data;  
using System.Data.Common;  
using System.Collections.Generic;  
using System.Data.SQLite;  
using System.Reflection;  
using System.Collections;     

namespace GetTime  
{  
    public class SQLiteDBHelper  
    {  
        private string connectionString = string.Empty;  

        static SQLiteDBHelper()  
        {  

        }  
        /// <summary>     
        /// 构造函数     
        /// </summary>     
        /// <param name="dbPath">SQLite数据库文件路径</param>     
        public SQLiteDBHelper(string dbPath)  
        {  
            this.connectionString = "Data Source="   dbPath;  
        }  
        /// <summary>     
        /// 创建SQLite数据库文件     
        /// </summary>     
        /// <param name="dbPath">要创建的SQLite数据库文件路径</param>     
        public static void CreateDB(string dbPath)  
        {  
            using (SQLiteConnection connection = new SQLiteConnection("Data Source="   dbPath))  
            {  
                connection.Open();  
                using (SQLiteCommand command = new SQLiteCommand(connection))  
                {  
                    command.CommandText = "CREATE TABLE Demo(id integer NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE)";  
                    command.ExecuteNonQuery();  

                    command.CommandText = "DROP TABLE Demo";  
                    command.ExecuteNonQuery();  
                }  
            }  
        }  
        /// <summary>     
        /// 对SQLite数据库执行增删改操作,返回受影响的行数。     
        /// </summary>     
        /// <param name="sql">要执行的增删改的SQL语句</param>     
        /// <param name="parameters">执行增删改语句所需要的参数,参数必须以它们在SQL语句中的顺序为准</param>     
        /// <returns></returns>     
        public int ExecuteNonQuery(string sql, IList<SQLiteParameter> parameters)  
        {  
            int affectedRows = 0;  
            using (SQLiteConnection connection = new SQLiteConnection(connectionString))  
            {  
                connection.Open();  
                using (DbTransaction transaction = connection.BeginTransaction())  
                {  
                    using (SQLiteCommand command = new SQLiteCommand(connection))  
                    {  
                        command.CommandText = sql;  
                        if (!(parameters == null || parameters.Count == 0))  
                        {  
                            foreach (SQLiteParameter parameter in parameters)  
                            {  
                                command.Parameters.Add(parameter);  
                            }  
                        }  
                        affectedRows = command.ExecuteNonQuery();  
                    }  
                    transaction.Commit();  
                }  
            }  
            return affectedRows;  
        }  
        /// <summary>     
        /// 执行一个查询语句,返回一个关联的SQLiteDataReader实例     
        /// </summary>     
        /// <param name="sql">要执行的查询语句</param>     
        /// <param name="parameters">执行SQL查询语句所需要的参数,参数必须以它们在SQL语句中的顺序为准</param>     
        /// <returns></returns>     
        public SQLiteDataReader ExecuteReader(string sql, IList<SQLiteParameter> parameters)  
        {  
            SQLiteConnection connection = new SQLiteConnection(connectionString);  
            SQLiteCommand command = new SQLiteCommand(sql, connection);  
            if (!(parameters == null || parameters.Count == 0))  
            {  
                foreach (SQLiteParameter parameter in parameters)  
                {  
                    command.Parameters.Add(parameter);  
                }  
            }  
            connection.Open();  
            return command.ExecuteReader(CommandBehavior.CloseConnection);  
        }  
        /// <summary>     
        /// 执行一个查询语句,返回一个包含查询结果的DataTable     
        /// </summary>     
        /// <param name="sql">要执行的查询语句</param>     
        /// <param name="parameters">执行SQL查询语句所需要的参数,参数必须以它们在SQL语句中的顺序为准</param>     
        /// <returns></returns>     
        public DataTable ExecuteDataTable(string sql, IList<SQLiteParameter> parameters)  
        {  
            using (SQLiteConnection connection = new SQLiteConnection(connectionString))  
            {  
                using (SQLiteCommand command = new SQLiteCommand(sql, connection))  
                {  
                    if (!(parameters == null || parameters.Count == 0))  
                    {  
                        foreach (SQLiteParameter parameter in parameters)  
                        {  
                            command.Parameters.Add(parameter);  
                        }  
                    }  
                    SQLiteDataAdapter adapter = new SQLiteDataAdapter(command);  
                    DataTable data = new DataTable();  
                    adapter.Fill(data);  
                    return data;  
                }  
            }  

        }  
        /// <summary>     
        /// 执行一个查询语句,返回查询结果的第一行第一列     
        /// </summary>     
        /// <param name="sql">要执行的查询语句</param>     
        /// <param name="parameters">执行SQL查询语句所需要的参数,参数必须以它们在SQL语句中的顺序为准</param>     
        /// <returns></returns>     
        public Object ExecuteScalar(string sql, IList<SQLiteParameter> parameters)  
        {  
            using (SQLiteConnection connection = new SQLiteConnection(connectionString))  
            {  
                using (SQLiteCommand command = new SQLiteCommand(sql, connection))  
                {  
                    if (!(parameters == null || parameters.Count == 0))  
                    {  
                        foreach (SQLiteParameter parameter in parameters)  
                        {  
                            command.Parameters.Add(parameter);  
                        }  
                    }  
                    return command.ExecuteScalar();  
                }  
            }  
        }  

        /// <summary>     
        /// 查询数据库中的所有数据类型信息     
        /// </summary>     
        /// <returns></returns>     
        public DataTable GetSchema()  
        {  
            using (SQLiteConnection connection = new SQLiteConnection(connectionString))  
            {  
                connection.Open();  
                DataTable data = connection.GetSchema("TABLES");  
                connection.Close();  
                //foreach (DataColumn column in data.Columns)     
                //{     
                //    Console.WriteLine(column.ColumnName);     
                //}     
                return data;  
            }  
        }  

    }  
} 

 

编制程序语言:C#

System.Data.SQLite数据库通用类的用法 下边演示一下恰巧编写的数据库通用类的用法,代码如下:

  谈到这边,顺便说一下,瞅着System.Data.SQLite的下载页面就头昏。即使在下载页面一初始就花了大气的篇幅来表明什么抉择下载,然则估摸没多少人会把它看完,所以那边照旧简介一下。

.NET版本:.NET Framework 4.0

澳门新萄京官方网站 16using System;
澳门新萄京官方网站 17using System.Collections.Generic;
澳门新萄京官方网站 18using System.Text;
澳门新萄京官方网站 19using System.Data;
澳门新萄京官方网站 20using System.Data.Common;
澳门新萄京官方网站 21using System.Data.SQLite;
澳门新萄京官方网站 22语言建立本地数据库,NET中自适应32位。using SQLiteQueryBrowser;
澳门新萄京官方网站 23namespace SQLiteDemo
澳门新萄京官方网站 24{
澳门新萄京官方网站 25        class Program
澳门新萄京官方网站 26        {
澳门新萄京官方网站 27                static void Main(string[] args)
澳门新萄京官方网站 28                {
澳门新萄京官方网站 29                        //CreateTable();
澳门新萄京官方网站 30                        //InsertData();
澳门新萄京官方网站 31                        ShowData();
澳门新萄京官方网站 32                        Console.ReadLine();
澳门新萄京官方网站 33                }
澳门新萄京官方网站 34                public static void CreateTable()
澳门新萄京官方网站 35                {
澳门新萄京官方网站 36                        string dbPath = "D:\Demo.db3";
澳门新萄京官方网站 37                        //假诺不存在改数据库文件,则开创该数据库文件

 

对象平台:X八陆

澳门新萄京官方网站 38                        if (!System.IO.File.Exists(dbPath))
澳门新萄京官方网站 39                        {
澳门新萄京官方网站 40                                SQLiteDBHelper.CreateDB("D:\Demo.db3");
澳门新萄京官方网站 41                        }
澳门新萄京官方网站 42                        SQLiteDBHelper db = new SQLiteDBHelper("D:\Demo.db3");
澳门新萄京官方网站 43                        string sql = "CREATE TABLE Test3(id integer NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,Name char(3),TypeName varchar(50),addDate datetime,UpdateTime Date,Time time,Comments blob)";
澳门新萄京官方网站 44                        db.ExecuteNonQuery(sql, null);
澳门新萄京官方网站 45                }
澳门新萄京官方网站 46                public static void InsertData()
澳门新萄京官方网站 47                {
澳门新萄京官方网站 48                        string sql = "INSERT INTO Test3(Name,TypeName,addDate,UpdateTime,Time,Comments)values(@Name,@TypeName,@addDate,@UpdateTime,@Time,@Comments)";
澳门新萄京官方网站 49                        SQLiteDBHelper db = new SQLiteDBHelper("D:\Demo.db3");
澳门新萄京官方网站 50                        for (char c = 'A'; c <= 'Z'; c )
澳门新萄京官方网站 51                        {
澳门新萄京官方网站 52                                for (int i = 0; i < 100; i )
澳门新萄京官方网站 53                                {
澳门新萄京官方网站 54                                        SQLiteParameter[] parameters = new SQLiteParameter[]{
澳门新萄京官方网站 55                                                new SQLiteParameter("@Name",c i.ToString()),
澳门新萄京官方网站 56                                        new SQLiteParameter("@TypeName",c.ToString()),
澳门新萄京官方网站 57                                        new SQLiteParameter("@addDate",DateTime.Now),
澳门新萄京官方网站 58                                        new SQLiteParameter("@UpdateTime",DateTime.Now.Date),
澳门新萄京官方网站 59                                        new SQLiteParameter("@Time",DateTime.Now.ToShortTimeString()),
澳门新萄京官方网站 60                                        new SQLiteParameter("@Comments","Just a Test" i)
澳门新萄京官方网站 61                                        };
澳门新萄京官方网站 62                                        db.ExecuteNonQuery(sql, parameters);
澳门新萄京官方网站 63                                }
澳门新萄京官方网站 64                        }
澳门新萄京官方网站 65                }
澳门新萄京官方网站 66                public static void ShowData()
澳门新萄京官方网站 67                {
澳门新萄京官方网站 68                        //查询从50条起的20条记录
澳门新萄京官方网站 69                        string sql = "select * from test3 order by id desc limit 50 offset 20";
澳门新萄京官方网站 70                        SQLiteDBHelper db = new SQLiteDBHelper("D:\Demo.db3");
澳门新萄京官方网站 71                        using (SQLiteDataReader reader = db.ExecuteReader(sql, null))
澳门新萄京官方网站 72                        {
澳门新萄京官方网站 73                                while (reader.Read())
澳门新萄京官方网站 74                                {
澳门新萄京官方网站 75                                        Console.WriteLine("ID:{0},TypeName{1}", reader.GetInt64(0), reader.GetString(1));
澳门新萄京官方网站 76                                }
澳门新萄京官方网站 77                        }
澳门新萄京官方网站 78                }
澳门新萄京官方网站 79
澳门新萄京官方网站 80        }
澳门新萄京官方网站 81}


语言建立本地数据库,NET中自适应32位。   1) 首先是按类型分为安装包、非静态连接的贰进制包和静态连接的2进制包。安装包会安装相关的动态库到系统内,并注册到GAC(Global Assembly Cache);三种贰进制包的分别在于非托管部分的连年情势各异,非静态连接的2进制包在选择时需求VC运维时库的辅助。要求留意的是:假若急需在 Visual Studio中总是SQLite数据库,就亟须挑选11分的安装包举办设置。

 

  譬喻,要在Visual Studio 20第10中学连连SQLite,应该下载“sqlite-netFx40-setup-bundle-x八陆-二〇〇八-1.0.90.0.exe”,那在下载包的求证中有拨云见日行草字说明。

澳门新萄京官方网站 82

 


[下载包的证实中有明显的大篆字表明]

 

  安装之后就能够在Visual Studio 20第10中学总是SQLite了:

澳门新萄京官方网站 83

 


[在Visual Studio中连接SQLite]

 

   2) 各种品种都按.NET版本分成了若干小组,如今从.NET 二.0 SP二到.NET 肆.五.一,1共帮助四个本子的.NET Framework。每一个.NET版本又分为三十六位和61位两组。选用3三位依旧陆十二人是依靠使用系统来调控的。比如开辟的时候是63个人系统而宣布后运维在三16位系统上,就需求在支付时接纳六十二个人System.Data.SQLite.dll,而在颁发时用33人的 System.Data.SQLite.dll替换(看起来很勤奋的规范请看后面包车型地铁消除办法)。

 

   三) 在各样.NET版本分组中都有贰个文件包,一个饱含“bundle”字样,另多少个从没有过。当中带有“bundle”字样的表示动态库是按混合格局编写翻译的,在 使用的时候只需求System.Data.SQLite.dll就足以了,而不带“bundle”的则是将非托管部分和托管部分各自编译,System.Data.SQLite.dll不可能独立使用,还需要有SQLite.Interop.dll手艺动用。


 

二、前言

在事实上情形中,选择通用类大量插入数据会有个别慢,那是因为在System.Data.SQLite中的操作假设未有一点名操作,则会被看作四个事物,要是需求三遍性写入多量记录,则建议显式创立2个事物,在那个业务中产生具备的操作比较好,那样的话比每一次操作创立2个事物的频率要升高广大。
最后选择VS二〇〇玖提供的作用,能够看来当中的多少如下:
澳门新萄京官方网站 84 
亟需表明的是在System.Data.SQLite中数据类型的鲜明不适很严刻,从创设Test三表的SQL语句来看,表中addDate、UpdateTime、提姆e分别是DateTime、Date、Time类型字段,但骨子里我们插入的时候未有遵从这些明确,最后呈现的结果也是拼命3郎依据数据库字段的定义。
总结
System.Data.SQLite确实是三个充裕Mini精悍的数据库,作为对SQLite的包装(SQLite能够在Android等类别的手提式有线话机上选取Java访问),它依然是体异常的小,同期相比较品质高、内部存款和储蓄器消耗小、无需安装仅需多个dll就能够运营的帮助和益处(假使在Mobile手提式有线电话机上则供给多个文件),唯1的一个弱点是一直比不上较的GUI(图形用户分界面),可是正因为这么它技术够容量小。
在实际上开拓中从不图形用户分界面只怕有些不方便,大家得以接纳VS来查阅和操作数据,笔者自个儿也做了二个小东东,便于管理和维护数据,分界面如下:
澳门新萄京官方网站 85 
借让你要付出数据量在九万条以下的选取,小编提议您尝试选用一下System.Data.SQLite,它大概是一个不易的挑选。

  言归正传,假设要动用“Any CPU”的System.Data.SQLite.dll,就不能够不运用不带“bundle”字样,即非混合编写翻译的二进制包。

事先使用的是软件的Access来创制基于当地的数据库软件,发掘在运用进度中,发掘Access相比耗内部存储器,运维速度比SQLite稍微慢,此外一个最关键的是Access加密的文本轻易被破解,由此,现在转向使用SQLite来顶替Access。

 

 

三、SQLite的下载

 

   非混合编写翻译的贰进制包有System.Data.SQLite.dll和SQLite.Interop.dll多少个动态库。按法定说明,SQLite.Interop.dll是可以放与System.Data.SQLite.dll一样的目录下,也足以献身x八陆或x6四子目录下,由 System.Data.SQLite.dll依据系统项目调用。为了确认,下载如下四个包来拓展相比较:

壹、由于是基于.NET的C#编程,需下载System.Data.SQLite.dll来实行引用,下载网站如下:

管理工科具:

sqlite-netFx40-binary-Win32-2010-1.0.90.0.zip

sqlite-netFx40-binary-x64-2010-1.0.90.0.zip

http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki

SQLite Expert

  结果开掘只有SQLite.Interop.*昨今差异,此外文件都完全相同

2、由于应用的是.NET Framework 四.0,且软件开拓的对象平台是X捌6,因而需下载 sqlite-netFx40-setup-x八陆-20十-一.0.十5.2.exe 软件,下载网站如下:

SQLiteSpy_1.9.1

澳门新萄京官方网站 86

http://system.data.sqlite.org/downloads/1.0.105.2/sqlite-netFx40-setup-x86-2010-1.0.105.2.exe

 

别的,还有一个 sqlite-netFx40-setup-bundle-x8陆-20十-一.0.105.二.exe,它与 sqlite-netFx40-setup-x八陆-20十-1.0.105.二.exe 的差别是,它富含VS20拾的运作时组件,因选拔的VS20一伍,全数安装该带有bundle的软件其实未有何用处,假如你采用的是VS20十,则足以开始展览下载安装,下载网址如下:

[正如结实:唯有SQLite.Interop.*不同]

http://system.data.sqlite.org/downloads/1.0.105.2/sqlite-netFx40-setup-bundle-x86-2010-1.0.105.2.exe

 

叁、下载的是Setup安装包,由此只需遵守点击下一步(Next)或安装(Install),直至安装完成即可。

  然后将多个包的SQLite.Interop.*个别位居x8陆和x64子目录下,合并成1个包。再在不一样类型的类别下运转test.exe,结果都是一点一滴通过

四、成立加密版本的SQLite数据库

澳门新萄京官方网站 87

在此选用的SQLite数据库管理软件为SQLite Studio,版本为三.一.1,下载网站如下:

 

https://sqlitestudio.pl/files/sqlitestudio3/complete/win32/sqlitestudio-3.1.1.zip

 

有人会问,怎么不利用Navicat For SQLite,那么些软件不止有一同的华语版本,而且还有详细使用表达,不是越来越好啊?

   最后索要做的正是在Visual Studio项目中援引System.Data.SQLite.dll,再将x八陆SQLite.Interop.dll和x64 SQLite.Interop.dll拷贝到品种根目录,蕴含在等级次序中,在性质中设置“借使较新则复制”或“始终复制”。生成结果就好像那样:

实际,当初也想用那个软件来对SQLite数据库举办保管,但在开立加密版本的SQLite数据库时,开掘使用System.Data.SQLite.dll来对该数据库操作时,会弹出类似数据库文件被加密也许不是数据库文件的唤起,而非加密版本的就从不此主题素材,由此,能够应用Navicat For SQLite来对非加密的SQLite数据操作,但一旦须要动用加密的SQLite数据库,推荐应用SQLite Studio,因为它生成的加密版本SQLite数据库能够被System.Data.SQLite.dll识别。

TestSQLitebinDebug

│  System.Data.SQLite.dll

│  TestSQLite.exe

├─x64

│      SQLite.Interop.dll

└─x86

       SQLite.Interop.dll

有关为啥不能动用Navicat For SQLite来对加密数据库记性操作的案由是:Navicat使用的加密算法与SQLite Studio的不1致。

  组合后的包命名称叫“sqlite-netFx40-static-binary-x八陆-x6四-2010-一.0.90.0.zip”,共享给我们,接待下载使用。

一、展开SQLite Studio,点击“增多数据库”开关,如下图所示:

 

澳门新萄京官方网站 88

◆ 5一CTO财富站共享

◆ 360云盘共享

贰、数据类型选拔“System.Data.SQLite”,点击深青莲增加开关,将文件保留至D:Test.db,并在Password一栏内输入密码:20一七(如不使用密码,此处留空就能够),然后点击“OK”按键就可以创设二个加密版本的SQLite DB文件,如下图所示:

 

澳门新萄京官方网站 89

 

三、双击“Test”数据库,将会显得其下的子节点,选用“Tables”,并在工具栏点击“新建表”按键,如下图所示:

转自:

澳门新萄京官方网站 90

四、在Table name文本框内输入表名Info,并点击“Add columns(Ins)”Logo以便加多列,如下图所示:

澳门新萄京官方网站 91

5、增添第二个字段,字段名叫ID,数据类型为Text,将主键前的复选框打钩,并点击“OK”开关,如下图所示:

澳门新萄京官方网站 92

六、重复第6个步骤,点击“Add columns(Ins)”Logo以便增加别的一个列,字段名叫Name,数据类型为Text,将非空前的复选框打钩,并点击“OK”开关,如下图所示:

澳门新萄京官方网站 93

七、点击“Commit structure changes”Logo以便保存该表及字段,如下图所示:

澳门新萄京官方网站 94

8、在弹出的对话框点击“OK”按键,即可到位表单的创办工作,如下图所示:

澳门新萄京官方网站 95

9、选取“数据”选项卡,点击“插入行(Ins)”图标按键,如下所示:

澳门新萄京官方网站 96

10、在行数据编辑栏里输入两条数据,第1条数据ID为2017、Name为LSB,第贰条数据ID为201一、Name为CNC,如下图所示:

澳门新萄京官方网站 97

11、增加数量停止之后,点击“提交(Ctrl Return)”Logo按钮提交刚才输入的两条数据,如下图所示:

澳门新萄京官方网站 98

1二、关闭SQLite Studio数据库管理软件。

五、使用System.Data.SQLite.dll访问SQLite数据库

一、新建2个类型名称为“SQLiteTest”的调整台应用程序,如下图所示:

澳门新萄京官方网站 99

2、在“SQLiteTest”项目中右键点击“引用”,在弹出的上下文菜单中采取“增多引用(福睿斯)”,如下图所示:

澳门新萄京官方网站 100

叁、将路径为“C:Program Files (x86)System.Data.SQLite2010GACSystem.Data.SQLite.dll”的引用增添进去,如下图所示:

澳门新萄京官方网站 101

肆、在项目性质设置中,将“生成”选项卡中的靶子平台改为“X86”,不然,软件无法运营,原因是行使的是X八六版本的System.Data.SQLite.dll,如下图所示:

澳门新萄京官方网站 102

 

5、在Main主函数里输入以下代码,如下:

using System;
using System.Data.SQLite;
using System.Data;

namespace SQLiteTest
{
    class Program
    {
        static void Main(string[] args)
        {
            using (SQLiteConnection connection = new SQLiteConnection(@"Data Source = D:test.db;Password = 2017"))
            {
                using (SQLiteCommand command = new SQLiteCommand(connection)
                { CommandText = "SELECT * FROM [main].[Info]" })
                {
                    DataTable table = new DataTable("Info");
                    SQLiteDataAdapter adapter = new SQLiteDataAdapter(command);
                    adapter.Fill(table);
                    foreach(DataRow row in table.Rows)
                    {
                        foreach(DataColumn col in table.Columns)
                        {
                            Console.Write($"{row[col]}t");
                        }
                        Console.WriteLine();
                    }
                }
            }
            Console.ReadKey();
        }
    }
}

6、运维结果如下:

澳门新萄京官方网站 103

 

附源代码:

https://pan.baidu.com/s/1bpeXXvx

本文由澳门新萄京官方网站发布于www.8455.com,转载请注明出处:语言建立本地数据库,NET中自适应32位

关键词: