设为首页 收藏本站
查看: 891|回复: 0

[经验分享] C#连接SQLite的...方法

[复制链接]
发表于 2016-11-29 07:23:08 | 显示全部楼层 |阅读模式
  C#连接SQLite的...方法
  1 SQLite简介
  SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月. 至今已经有10个年头,SQLite也迎来了一个版本 SQLite 3已经发布。
  官方网站:http://www.sqlite.org/
  详细简介:http://baike.baidu.com/view/19310.htm
  2 C#连接,操作SQLite数据库
  2.1 结合Enterprise Library连接,操作SQLite
  企业库是我们常用的框架之一,可以从http://entlib.codeplex.com/下载。安装之后有源代码和chm的文档。最新版本目前是V5.0。里面的很多思想更值得我们程序员去研究,例如:如何设计可扩展的组建?
  企业库中的数据访问组件更是我们常用的数据访问组件之一。组件默认支持SQL Server和Oracle的数据库访问,支持自定义的扩展。
  使用企业库操作SQLite数据库,需要用到企业库的一个扩展组件,Enterprise Library Contrib 。里面扩展了企业库的很多功能。其中对数据库的扩展包括了访问操作SQLite,让我们可以像在操作SQL SERVER那样,保持代码不用很大的修改,可以很容易的过渡到SQLite上。
  遗憾的是目前的这个entlib contrib的版本是V4.1,它只支持企业库的V4.1版本,也就是说它只能和V4.1版本的企业库的数据访问组件配合使用。否则会报错。
  在http://entlib.codeplex.com/上也可以下载到历史版本,也就是可以下载到V4.1。
  用法也可以参考:ASP.NET: Using SQLite with Enterprise Library 3.1
  首先在web.config或者是app.config中添加如下配置
DSC0000.gif DSC0001.gif 代码 <!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--><configuration>
  
<configSections>
    
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=4.1.0.0, Culture=neutral, PublicKeyToken=null />
  </configSections>
  <dataConfiguration defaultDatabase="

 
">
     
<providerMappings>
      
<add databaseType="EntLibContrib.Data.SQLite.SQLiteDatabase, EntLibContrib.Data.SqLite, Version=4.1.0.0, Culture=neutral, PublicKeyToken=null"
        name
="System.Data.SQLite" />
    
</providerMappings>
  
</dataConfiguration>
  
<connectionStrings>
    
<add name="sqlite" connectionString="Data Source=|DataDirectory|\db;Pooling=true;FailIfMissing=false"
      providerName
="System.Data.SQLite" />
  
</connectionStrings>
</configuration>



  上面的connectionstring配置节的db就是SQLite的数据库文件,将它放在Web应用的App_Data目录,|DataDirectory|就代表这个目录的位置,后面的就是文件名。
  剩下的就是我们使用企业库访问SQL Server是一样的了。
 
代码 <!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->  Database db=DatabaseFactory.CreateDatabase ("ConnectionString");
                DbCommand comm 
= db.GetStoredProcCommand("GetUserByID");
                IDataReader reader 
= null;
                db.AddInParameter(comm, 
"UserID", DbType.String, "12");
                
using (reader = db.ExecuteReader(comm))
                {
                   
                }




   2.2 使用SQLite.NET访问SQLite
  SQLite.NET也是一个数据访问组件,其中的System.Data.SQLite 就好像是.NET自带的System.Data.SqlClient一样。里面包含了connection、command等数据访问的常用对象,只是他们前面都有一个前缀sqlite。
  下载地址:  http://sqlite.phxsoftware.com/
  添加System.Data.SQLite 的引用之后。在配置文件(web.config or app.config)中添加如下配置
代码 <!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->  <system.data>
    
<DbProviderFactories>
      
<remove invariant="System.Data.SQLite"/>
      
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite, Version=1.0.66.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />
    
</DbProviderFactories>
  
</system.data>


  也就是添加一个DbProviderFactory的创建源,在代码中就可以使用DbProviderFactory类来创建SQLite的数据访问对象了。
代码 <!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->DbProviderFactory fact = DbProviderFactories.GetFactory("System.Data.SQLite");
                    
using (DbConnection conn = fact.CreateConnection())
                    {
                        conn.ConnectionString 
= System.Configuration.ConfigurationManager.ConnectionStrings["sqlite"].ConnectionString;
                        conn.Open();
                        DbCommand comm 
= conn.CreateCommand();
                        comm.CommandText 
= "select * from customer";
                        comm.CommandType 
= CommandType.Text;
                        
using (IDataReader reader = comm.ExecuteReader())
                        {
                            
while (reader.Read())
                            {
                                Response.Write(reader[
0]);
                            }
                        }
                    }



  2.3 使用原生态的ADO.NET访问SQLite
  原生态的访问,就是说直接用connection和command这些对象打开数据库,然后打开连接,进行数据的操作。
代码 <!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />--> using (DbConnection conn = new SQLiteConnection( System.Configuration.ConfigurationManager.ConnectionStrings["sqlite"].ConnectionString))
                    {
                        conn.Open();
                        DbCommand comm 
= conn.CreateCommand();
                        comm.CommandText 
= "select * from customer";
                        comm.CommandType 
= CommandType.Text;
                        
using (IDataReader reader = comm.ExecuteReader())
                        {
                            
while (reader.Read())
                            {
                                Response.Write(reader[
0]);
                            }
                        }
                    }



  3 SQLite的相关工具
  3.1 SQLite Database Browser
  既然SQLite是一个数据库,那么我们肯定想要一个GUI工具来操作这个数据库,进行管理。创建库、表、执行SQL语句等操作都可以在一个GUI上进行操作就好了。SQLite Database Browser就是这样的一款工具,下载地址:http://sqlitebrowser.sourceforge.net/
DSC0002.jpg

  在上图中看到三个tab:Database Structure,Browser Data,Execute SQL。
  通过第一个可以查看数据库的结构,第二个可以浏览数据,第三个可以执行任何SQL语句,下面可以显示sql语句的执行结果。这个工具还可以进行数据库的管理工作。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-306836-1-1.html 上篇帖子: android SQLite使用 下篇帖子: Sqlite的FAQ学习
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表