初识SqlLite ---.net连接数据库

简介:   Sqlite 是一款轻量级的关系型数据库,以小巧和嵌入式闻名。以前只是听说,现在终于忍不住要尝试下.本文的初衷是为.net平台的使用者提供帮助。 Sqlite有专门为VS2010开发的程序包,大家可以到System.

 

  Sqlite 是一款轻量级的关系型数据库,以小巧和嵌入式闻名。以前只是听说,现在终于忍不住要尝试下.本文的初衷是为.net平台的使用者提供帮助。

Sqlite有专门为VS2010开发的程序包,大家可以到System.Data.SQLite Download Page 下去下载,注意是:This is the only setup package that is

capable of installing the design-time components for Visual Studio 2010. 

安装后,在VS2010中新建数数库链接就会看到有System.Data.SQLite的链接,在这里你可以创建和打开Sqlite数据库:

 

在sqlite链接中,你可以为你的sqlite数据库设置密码和其他配置。确定后,会生成一个没有扩展名的数据文件。

大家一般都了解到,sqlite数据文件是.db或.sqlite或其他扩展结尾,而用VS2010创建的sqlite数据库文件是没有扩展名的,并且其加密能力特别高,

一般的sqlite程序在没密码的情况下,很难打开。

用VS2010创建sqlite数据库后,就可以像操作sql server那样操作sqlite,如:建表,查询等都非常方便,感兴趣的可以尝试下,这里就不一一截图说明了。

在项目,需要添加sqlite引用:System.Data.SQLite.dll和System.Data.SQLite.Linq.dll

Sqlite数据库清理

最后,说明下SQLite的一个不好的地方,当数据库中的一个或多个数据表存在大量的插入、更新和删除等操作时,将会有大量的磁盘空间被已删除的数据所占用,

在没有执行VACUUM命令之前,SQLite并没有将它们归还于操作系统。

由于该类数据表中的数据存储非常分散,因此在查询时,无法得到更好的批量IO读取效果,从而影响了查询效率。 

在SQLite中,仅支持清理当前连接中的主数据库,而不能清理其它Attached数据库。VACUUM命令在完成数据清理时采用了和PostgreSQL相同的策略,即创建

一个和当前数据库文件相同大小的新数据库文件,之后再将该数据库文件中的数据有组织的导入到新文件中,其中已经删除的数据块将不会被导入,在完成导入后,

收缩新数据库文件的尺寸到适当的大小。可以使用VACUUM的方法对sqlite数据库进行清理:

SQLiteConnection sqlconn = new SQLiteConnection(@"Data Source=C:\cache;Version=3;Password=123");
                sqlconn.Open();
                SQLiteCommand sqlCom = sqlconn.CreateCommand();
                sqlCom.CommandText = "VACUUM";
                sqlCom.ExecuteNonQuery();

好了,介绍了很多运行下面代码试试:

 string datasource = "D:/sqlLite/SQLite.NET/bin/Test.db3";
            System.Data.SQLite.SQLiteConnection.CreateFile(datasource);
            //连接数据库
            System.Data.SQLite.SQLiteConnection conn = new System.Data.SQLite.SQLiteConnection();
            System.Data.SQLite.SQLiteConnectionStringBuilder connstr = new System.Data.SQLite.SQLiteConnectionStringBuilder();
            connstr.DataSource = datasource;
            connstr.Password = "admin";//设置密码,SQLite ADO.NET实现了数据库密码保护
            conn.ConnectionString = connstr.ToString();
            conn.Open();
            //创建表
            System.Data.SQLite.SQLiteCommand cmd = new System.Data.SQLite.SQLiteCommand();
            string sql = "CREATE TABLE test(username varchar(20),password varchar(20))";
            cmd.CommandText = sql;
            cmd.Connection = conn;
            cmd.ExecuteNonQuery();
            //插入数据
            sql = "INSERT INTO test VALUES('a','b')";
            cmd.CommandText = sql;
            cmd.ExecuteNonQuery();
            //取出数据
            sql = "SELECT * FROM test";
            cmd.CommandText = sql;
            System.Data.SQLite.SQLiteDataReader reader = cmd.ExecuteReader();
            StringBuilder sb = new StringBuilder();
            while (reader.Read())
            {
                sb.Append("username:").Append(reader.GetString(0)).Append("\n")
                .Append("password:").Append(reader.GetString(1));
            }
            Console.WriteLine(sb.ToString());
            Console.Read();

点击运行,有可能会报错:

原因是驱动版本问题,详细可见

混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该...

解决方法就是在app.config中加入

 

  <startup useLegacyV2RuntimeActivationPolicy="true">

    <supportedRuntime version="v4.0"/>

  </startup>

 

因为我用的是控制台,所有要另外添加app.config文件

好,在运行,成功:结果如下

我有一个疑问,这个数据库文件我怎么生成,难道一直用这个Test.db3。问题先留着,有知道可以告诉我一下,因为是浅浅的尝试还有很多不知道。慢慢学,慢慢提高,我会一直将我的心得都写出来的

 

 

目录
相关文章
|
2月前
|
数据库 C# 开发者
ADO.NET连接到南大通用GBase 8s数据库
ADO.NET连接到南大通用GBase 8s数据库
|
2月前
|
数据库连接 Linux Shell
Linux下ODBC与 南大通用GBase 8s数据库的无缝连接配置指南
本文详细介绍在Linux系统下配置GBase 8s数据库ODBC的过程,涵盖环境变量设置、ODBC配置文件编辑及连接测试等步骤。首先配置数据库环境变量如GBASEDBTDIR、PATH等,接着修改odbcinst.ini和odbc.ini文件,指定驱动路径、数据库名称等信息,最后通过catalog.c工具或isql命令验证ODBC连接是否成功。
|
2月前
|
存储 缓存 NoSQL
2款使用.NET开发的数据库系统
2款使用.NET开发的数据库系统
|
2月前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
61 3
|
2月前
|
JSON JavaScript 关系型数据库
node.js连接GBase 8a 数据库 并进行查询代码示例
node.js连接GBase 8a 数据库 并进行查询代码示例
|
2月前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
|
2月前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(下)
本文接续前文,深入讲解了在Windows环境下使用C#和ADO.NET操作南大通用GBase 8s数据库的方法。通过Visual Studio 2022创建项目,添加GBase 8s的DLL引用,并提供了详细的C#代码示例,涵盖数据库连接、表的创建与修改、数据的增删查改等操作,旨在帮助开发者提高数据库管理效率。
|
2月前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
50 1
|
12天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
39 3
|
12天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
42 3