C# SQLLite

摘要:
Cmd输入命令行以创建数据库文件:。help Enter(您可以在此处直接输入SQL语句来创建表;act=download下载sqlitestudio以进行图形操作,test.db或DataSource=test.db--应用于和应用程序,或.net可以自动找到目录3。

1。从www.sqlite.org下载SQLite 3.3.4的版本
   为了方便,把它解压了,就一个SQLite3.exe,放入Windows目录下。 Cmd 进入命令行
   创建数据库文件:   >SQLite3 d:\test.db    就生成了一个test.db在d盘。这样同时也SQLite3挂上了这个test.db
   查看可用命令   >.help 回车即可( 可以在这里直接输入SQL语句创建表格 用 ; 结束,然后回车就可以看到了)
   查看创建了多少表   >.tables
   查看表结构   >.schema 表名
   查看目前挂的数据库   >.database
   把查询输出到文件   >.output 文件名       > 查询语句;    查询结果就输出到了文件c:\query.txt

   把查询结果用屏幕输出   >.output stdout
   把表结构输出,同时索引也会输出 >.dump 表名
   退出   >.exit 或者.quit

   也可以在网站http://sqlitestudio.one.pl/index.rvt?act=download上下载sqlitestudio进行图形化操作,用法和SQL Server相似。添加时右没有库就会新建在程序所在目录下,否则会附加所选库。

2。从http://sqlite.phxsoftware.com/下载Ado.net驱动。
   下载了安装,在安装目录中存在System.Data.SQLite.dll
    我们只需要拷贝这个文件到引用目录,并添加引用即可对SQLite数据库操作了
   所有的Ado.net对象都是以SQLite开头的,比如SQLiteConnection
   连接串只需要如下方式
   Data Source=d:\test.db 或者DataSource=test.db--应用在和应用程序或者.net能够自动找到的目录
 3。SQL语法
   由于以前用SQLServer或者ISeries,所以DDL的语法很汗颜
   1)创建一个单个Primary Key的table

CREATE TABLE  [Admin] (
[UserName] [nvarchar] (20) PRIMARY KEY NOT NULL ,
[Password] [nvarchar] (50) NOT NULL ,
[Rank] [smallint] NOT NULL ,
[MailServer] [nvarchar] (50) NOT NULL ,
[MailUser] [nvarchar] (50) NOT NULL ,
[MailPassword] [nvarchar] (50) NOT NULL ,
[Mail] [nvarchar] (50) NOT NULL
) ;

   2)创建一个多个Primary Key的table

CREATE TABLE  [CodeDetail] (
[CdType] [nvarchar] (10) NOT NULL ,
[CdCode] [nvarchar] (20) NOT NULL ,
[CdString1] [ntext] NOT NULL ,
[CdString2] [ntext] NOT NULL ,
[CdString3] [ntext] NOT NULL,
PRIMARY KEY (CdType,CdCode)
) ; 

   3)创建索引,   还可以视图等等。

CREATE  INDEX [IX_Account] ON  [Account]([IsCheck], [UserName]);  

4.可用的SQL语句

  Select * from Sqlite_master
Select datetime('now')
Select date('now')
Select time('now')

  以及很多函数,具体可以参考SQLite的wiki.
  成批插入的时候,启动事务,比不启动事务快n倍
  还有就是尽量使用参数化的SQL,估计和商用DB一样能够自动Prepare.

===========

sqlite可以在shell/dos command底下直接执行命令:sqlite3 film.db "select * from film;"
输出 HTML 表格sqlite3 -html film.db "select * from film;"
将数据库「倒出来」sqlite3 film.db ".dump" > output.sql
利用输出的资料,建立一个一模一样的数据库(加上以上指令,就是标准的SQL数据库备份了):sqlite3 film.db < output.sql
在大量插入资料时,先打这个指令begin;
插入完资料后要打这个指令,资料才会写进数据库中commit;

5  C#使用SQLite数据库
   1 从http://sqlite.phxsoftware.com/(An open source ADO.NET provider for the SQLite database engine)下载驱动程序。
   2 安装后,运行test.exe,测一下性能。
   3 打开visual studio,新建数据连接,可以看到数据源多了一项SQLite  DataBase File.用VS建立库 E:\ghc1.db
   4 System.Data.SQLite是混合模式程序集,是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时

中加载该程序集。故需要在App.config中配置如下参数。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
</configuration>

  5 提供一个自己写的SQLiteHelper

C# SQLLite第1张C# SQLLite第2张View Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SQLite;
using System.Data;
using System.Data.Common;

namespace Com.Luminji.DataService.SQLHelpers
{
public class SQLiteHelper
{
///<summary>
/// ConnectionString样例:Datasource=Test.db3;Pooling=true;FailIfMissing=false
///</summary>
public static string ConnectionString { get; set; }

private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, string cmdText, params object[] p)
{
if (conn.State != ConnectionState.Open)
conn.Open();
cmd.Parameters.Clear();
cmd.Connection = conn;
cmd.CommandText = cmdText;
cmd.CommandType = CommandType.Text;
cmd.CommandTimeout = 30;
if (p != null)
{
foreach (object parm in p)
cmd.Parameters.AddWithValue(string.Empty, parm);
}
}

public static DataSet ExecuteQuery(string cmdText, params object[] p)
{
using (SQLiteConnection conn = new SQLiteConnection(ConnectionString))
{
using (SQLiteCommand command = new SQLiteCommand())
{
DataSet ds = new DataSet();
PrepareCommand(command, conn, cmdText, p);
SQLiteDataAdapter da = new SQLiteDataAdapter(command);
da.Fill(ds);
return ds;
}
}
}

public static int ExecuteNonQuery(string cmdText, params object[] p)
{
using (SQLiteConnection conn = new SQLiteConnection(ConnectionString))
{
using (SQLiteCommand command = new SQLiteCommand())
{
PrepareCommand(command, conn, cmdText, p);
return command.ExecuteNonQuery();
}
}
}

public static SQLiteDataReader ExecuteReader(string cmdText, params object[] p)
{
using (SQLiteConnection conn = new SQLiteConnection(ConnectionString))
{
using (SQLiteCommand command = new SQLiteCommand())
{
PrepareCommand(command, conn, cmdText, p);
return command.ExecuteReader(CommandBehavior.CloseConnection);
}
}
}

public static object ExecuteScalar(string cmdText, params object[] p)
{
using (SQLiteConnection conn = new SQLiteConnection(ConnectionString))
{
using (SQLiteCommand command = new SQLiteCommand())
{
PrepareCommand(command, conn, cmdText, p);
return command.ExecuteScalar();
}
}
}

}
}


另一种方法:

C# SQLLite第3张C# SQLLite第4张View Code
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SQLite;

namespace SqliteWebApp
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//这个文件是预先生成的数据库文件
string sqliteFilePath = Server.MapPath("~/App_Data/firstsqlite.db");
DataSet ds = new DataSet();
//声明一个Sqlite数据库的链接
using (SQLiteConnection conn = new SQLiteConnection("Data Source=" + sqliteFilePath))
{
//创建sqlite命令
using (SQLiteCommand comm = conn.CreateCommand())
{
//打开数据库链接
conn.Open();
//插入数据
comm.CommandText = "INSERT INTO [t] VALUES(10,'Hello 9')";
comm.ExecuteNonQuery();

//更新数据
comm.CommandText = "UPDATE [t] SET name = 'Hello 10' WHERE id = 10";
comm.ExecuteNonQuery();

//使用参数插入数据
comm.CommandText = "INSERT INTO [t] VALUES(@id,@name)";
comm.Parameters.AddRange(
new SQLiteParameter[]{
CreateSqliteParameter("@id",DbType.Int32,4,11),
CreateSqliteParameter("@name",DbType.String,10,"Hello 11")
});
comm.ExecuteNonQuery();

comm.Parameters.Clear();
//select数据分页用limit就行,很方便
comm.CommandText = "Select * From MAIN.[t]";
using (SQLiteDataAdapter adapter = new SQLiteDataAdapter(comm))
{
adapter.Fill(ds);
}
}
}

gv1.DataSource = ds;
gv1.DataBind();
}

///<summary>
/// 放回一个SQLiteParameter
///</summary>
///<param name="name">参数名字</param>
///<param name="type">参数类型</param>
///<param name="size">参数大小</param>
///<param name="value">参数值</param>
///<returns>SQLiteParameter的值</returns>
static private SQLiteParameter CreateSqliteParameter(string name,DbType type,int size,object value)
{
SQLiteParameter parm = new SQLiteParameter(name,type, size);
parm.Value = value;
return parm;
}
}
}



免责声明:文章转载自《C# SQLLite》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何判断页面是否加载完成?Asset Bundle Browser 学习下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Sql Server数据库的备份和恢复措施

最常用的操作,新手们看看…… 一、备份数据库 1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server 2、SQL Server组-->双击打开你的服务器-->双击打开数据库目录 3、选择你的数据库名称(如论坛数据库Forum)-->然后点上面菜单中的工具-->选择备份数据库 4、备份选项选择完全备...

Springboot 整合Jersey

  在查看EurekaServer 服务端代码时偶然看到Jersey这个东西,简单记录下。 1. 简介   Jersey是一个RESTFUL请求服务JAVA框架,与常规的JAVA编程使用的struts框架类似,它主要用于处理业务逻辑层。   1.X的版本是sun公司提供的独立的jar包,在2.X版本中已经将jersey融合到JavaSE中,在javax.w...

7 款顶级的开源 Web 分析软件

Web 分析无非就是 Web 流量的测量。但它并不限于测量网络流量,还包括: 分析 数据采集 为了了解和优化网页而上报网络数据 Google Analytics是最广泛使用的基于云的网络分析服务。不过,你的数据已被锁定在Google的生态系统中。如果你想要100%的数据拥有权,请尝试以下开源网络分析软件来获取有关网站的访问者数量和页面浏览量的信息。...

unity中的UI状态机,用于各界面之间的切换和跳转

首先感谢姜雪松先生,大家可以去他的博客查看注释以及代码等,http://jxwgame.blog.51cto.com/943299/1613585  言归正传: 1.在开发项目的过程中,总是会遇到这样的问题,从一个界面跳转到另外一个界面,每次操作都要对一些对象进行显示与隐藏,操作很麻烦也不方便维护修改。2.于是很多人在这样的一个基础上开发出了很多便于维护和...

Dango之初识安装

1. MVC和MTV框架 1.1MVC Web服务器开发领域里著名的MVC模式 所谓MVC就是把Web应用分为模型(M), 控制器(C)和视图(V)三层,他们之间以一种插件式的、松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面),控制器接受用户的输入调用模型和视图完成用户的请求,其示意图如下所示: 1.2MTV...

利用JDBC连接Oracle数据库(转)

http://blog.csdn.net/wahaha1_/article/details/8512438 JDBC是Sun公司制定的一个可以用Java语言连接数据库的技术。 一、JDBC基础知识 JDBC(JavaDataBaseConnectivity,java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问...