c#连接sqlite数据库语句,c# 读取sqlite

  c#连接sqlite数据库语句,c# 读取sqlite

  当我们开发应用程序时,我们经常需要存储一些数据。存储的方式有很多种,使用数据库是比较流行的方式。但是对于一些小的应用,比如一些手机app,通常的数据库太大,轻量级的SQLite可以解决这个问题。不仅操作简单,而且只需要一个文件。在这里,我们来谈谈用C#语言操作SQLite数据库。

  1.SQLite简介

  SQLite是一个轻量级数据库,是一个符合ACID的关系数据库管理系统,包含在一个相对较小的C库中。它是由D.RichardHipp建立的公共领域项目,其设计目标是嵌入式,目前已经在很多嵌入式产品中使用。它占用的资源非常少。在嵌入式设备中,只有几百K的内存可能就足够了。可以支持Windows/Linux/Unix等主流操作系统。同时可以和很多编程语言结合,比如Tcl、C#、PHP、Java等。和ODBC接口。与MySQL和PostgreSQL这两个开源的世界著名的数据库管理系统相比,它的处理速度比它们都要快。

  如果你想了解更多关于SQLite的信息,你可以访问它的官方网站:http://www.sqlite.org/.

  2.开始前的准备

  在开始之前,我们需要准备必要的开发环境。这一次,我们使用的是Visual Studio 2015开发环境,但我们只使用VS2015开发基于SQLite的应用是不够的。我需要从SQLite的官网下载安装SQLite。

  在SQLite官网找到下载。有适用于各种环境的SQLite组件和源代码。我们选择预编译的二进制文件。NET,它应用于。NET开发环境。点击进入,你会看到各种版本适用于。NET2.0到4.6以及32位和64位平台。让我们只选择32位Windows的设置(。NET Framework 4.6)下载并安装。

  3.C#操作SQLite的封装

  在完成开发环境的准备后,我们将对SQLite操作进行必要的封装,进一步降低其在具体应用中的使用难度。这里我们只是封装了一些常用且必要的函数。

  1个公共类SQLiteHelper

  2 {

  3 //创建数据库文件

  4 public static void CreateDBFile(字符串文件名)

  5 {

  6字符串路径=系统。environment . current directory @ /Data/;

  7如果(!目录。存在(路径))

  8 {

  9目录。创建目录(路径);

  10 }

  11字符串databaseFileName=路径文件名;

  12如果(!文件。存在(数据库文件名))

  13 {

  14 SQLiteConnection。CreateFile(数据库文件名);

  15 }

  16 }

  17

  18 //生成连接字符串

  19私有静态字符串CreateConnectionString()

  20 {

  21 SQLiteConnectionStringBuilder connectionString=new SQLiteConnectionStringBuilder();

  22 connectionString。data source=@ data/script helper . db ;

  23

  24 string conStr=connectionString。ToString();

  25 return conStr

  26 }

  27

  28 ///摘要

  29 ///处理插入数据库的空值

  30////摘要

  31 ///param name=value /param

  32 ///returns /returns

  33公共静态对象ToDbValue(对象值)

  34 {

  35如果(值==空)

  36 {

  37返回DBNull。价值;

  38 }

  其他39个

  40 {

  41返回值;

  42 }

  43 }

  四十四

  45 ///摘要

  4///处理从数据库中读取的空值

  47////摘要

  48 ///param name=value /param

  49 ///returns /returns

  50公共静态对象FromDbValue(对象值)

  51 {

  52 if (value==DBNull。值)

  53 {

  54返回null

  55 }

  56其他

  57 {

  58返回值;

  59 }

  60 }

  61

  62 ///摘要

  6///执行非查询数据库操作

  64////摘要

  6///param name= sqlstring 要执行的sql语句/param

  6///param name= parameters 参数列表/param

  6///returns返回受影响的文章/退货的数量

  68 public static int ExecuteNonQuery(string sqlString,params SQLiteParameter[]参数)

  69 {

  70 string connectionString=CreateConnectionString();

  71使用(SQLiteConnection conn=new SQLiteConnection(connectionString))

  72 {

  73 conn . Open();

  74使用(SQLite命令cmd=conn . create命令())

  75 {

  76厘米深.CommandText=sqlString

  77 foreach(参数中的SQLiteParameter参数)

  78 {

  79厘米深.参数。添加(参数);

  80 }

  81返回cmd .ExecuteNonQuery();

  82 }

  83 }

  84 }

  85

  86 ///摘要

  87 ///执行查询并返回查询结果第一行第一列

  88////摘要

  89 ///param name=sqlString SQL语句/param

  90 ///param name=sqlparams 参数列表/param

  91 ///返回/返回

  92公共静态对象ExecuteScalar(string sqlString,params SQLiteParameter[]参数)

  93 {

  94 string connectionString=CreateConnectionString();

  95使用(SQLiteConnection conn=new SQLiteConnection(connectionString))

  96 {

  97 conn . Open();

  98使用(SQLite命令cmd=conn . create命令())

  99 {

  100厘米CommandText=sqlString。

  101 foreach(参数中的SQLiteParameter参数)

  102 {

  103厘米深.参数。添加(参数);

  104 }

  105返回cmd .ExecuteScalar();

  106 }

  107 }

  108 }

  109

  110 ///摘要

  111 ///查询多条数据

  112////摘要

  113 ///param name=sqlString SQL语句/param

  114 ///param name=parameters 参数列表/param

  115 ///返回返回查询的数据表/退货

  116公共静态数据表GetDataTable(string sqlString,params SQLiteParameter[]参数)

  117 {

  118 string connectionString=CreateConnectionString();

  119使用(SQLiteConnection conn=new SQLiteConnection(connectionString))

  120 {

  121 conn . Open();

  122使用(SQLite命令cmd=conn . create命令())

  123 {

  124厘米深.CommandText=sqlString

  125 foreach(参数中的SQLiteParameter参数)

  126 {

  127厘米深.参数。添加(参数);

  128 }

  129 DataSet ds=new DataSet();

  130 sqlitedatadapter=新的sqlitedatadapter(cmd);

  131适配器。填充(ds);

  132返回ds .表[0];

  133 }

  134 }

  135 }

  136 }4、应用实例

  上面封装完了之后,我们就是使用上面封装的函数来实际操作数据库数据库。对数据库的应用实例无非就是对各种对象的增、删、改、查。我没列举一个对源码类型对象的各种操作实例如下:

  一个公共类ScriptTypeDAL

  2 {

  3公共脚本typem ToScriptType(DataRow行)

  4 {

  5 script typem type=新脚本typem();

  6型ScriptTypeId=(Guid)行[ script typeid ];

  七型脚本类型=(字符串)行[脚本类型];

  8型I susing=(bool)row[ I susing ];

  9返回式;

  10 }

  11

  12公共空的插入(ScriptTypeM类型)

  13 {

  14 SQLiteHelper .ExecuteNonQuery(@ 插入TB_ScriptType(ScriptTypeId,ScriptType,IsUsing)

  15个值(@ScriptTypeId,@ScriptType,1),

  16新的SQLiteParameter(ScriptTypeId ,类型ScriptTypeId),

  17新的SQLiteParameter(ScriptType ,类型.脚本类型));

  18

  19 }

  20

  21公共空的更新(ScriptTypeM类型)

  22 {

  23 SQLiteHelper .ExecuteNonQuery(@ update TB _ script type set script type=@ script type

  24 I susing=@ I susing where script typeid=@ script typeid,

  25新的SQLiteParameter(ScriptType ,类型ScriptType),

  26新的SQLiteParameter( I using ,类型我使用),

  27新的SQLiteParameter(ScriptTypeId ,类型script typeid));

  28 }

  29

  30公共ScriptTypeM GetbyId(Guid id)

  31 {

  32 DataTable table=SQLiteHelper .get datatable( select * from TB _ script type where script typeid=@ id ,

  33新的SQLiteParameter(id ,id));

  34如果(表。行数。计数=0)

  35 {

  36返回空

  37 }

  38 else if(表。行数。计数1)

  39 {

  40抛出新异常( Id重复!);

  41 }

  其他42个

  43 {

  44返回到脚本类型(表. rows[0]);

  45 }

  46 }

  47

  48 public ScriptTypeM GetbyName(字符串名)

  49 {

  50数据表table=SQLiteHelper .get datatable( select * from TB _ script type where script type=@ name ,

  51新的SQLiteParameter(name ,name));

  52如果(表。行数。计数=0)

  53 {

  54返回空

  55 }

  56 else if(表。行数。计数1)

  57 {

  58抛出新异常(类型名称重复!);

  59 }

  其他60个

  61 {

  62返回到脚本类型(表. rows[0]);

  63 }

  64 }

  65

  66 public ScriptTypeM[] ListAll()

  67 {

  68数据表table=SQLiteHelper .获取datatable( select * from TB _ script type where I using=1 );

  69脚本类型m[]类型=新脚本类型m[表.行。计数];

  70 for(int I=0;我表。行数。计数;我)

  71 {

  72 type[i]=ToScriptType(表。rows[I]);

  73 }

  74返回式;

  75 }

  76

  77 public script typem[]Search(string SQL,List SQLiteParameter parameter List)

  78 {

  79 DataTable table=SQLiteHelper。GetDataTable(sql,parameterList。ToArray());

  80 script typem[]type=new script typem[table。rows . Count];

  81 for(int I=0;我表。行数。计数;我)

  82 {

  83 type[i]=ToScriptType(表。rows[I]);

  84 }

  85返回式;

  86 }

  87 }SQLite数据库小巧易用,在一些小型应用和嵌入式应用中有优势。当然,如何轻松使用,还是要看个人。

  想更方便及时的阅读相关文章,请关注我的微信微信官方账号【木南创智】

  转载请联系作者取得转载授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 关系型数据库与非关系型数据库简介一样吗,关系型数据库非关系型数据库有哪些
  • 关系型数据库与非关系型数据库简介一样吗,关系型数据库非关系型数据库有哪些,关系型数据库与非关系型数据库简介
  • 关于redis数据库入门详细介绍图片,redis数据库的使用,关于Redis数据库入门详细介绍
  • 使用php连接mysql数据库,php连接数据库的方法
  • 使用php连接mysql数据库,php连接数据库的方法,一文详解PHP连接MySQL数据库的三种方式
  • 什么是分库分表,为什么要进行分库分表-,分库分表的区别,数据库分库分表是什么,什么情况下需要用分库分表
  • vb中adodb连接数据库,
  • treeview控件绑定数据,wpf treeview数据绑定,详解TreeView绑定数据库
  • sql的多表查询,数据库如何实现多表查询
  • SQL数据库的图形管理界面工具是,sql图形界面创建数据库
  • SQL数据库的图形管理界面工具是,sql图形界面创建数据库,SQLServer2019 数据库的基本使用之图形化界面操作的实现
  • sql数据库定时备份怎么弄,mysql 定期备份
  • sql数据库定时备份怎么弄,mysql 定期备份,MySQL 数据库定时备份的几种方式(全面)
  • sqlserver的nvarchar和varchar,数据库varchar和nvarchar
  • sqlserver的nvarchar和varchar,数据库varchar和nvarchar,SQL中varchar和nvarchar的基本介绍及其区别
  • 留言与评论(共有 条评论)
       
    验证码: