日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# SQLLite

發布時間:2023/12/19 C# 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# SQLLite 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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();
}
}
}

}
}


另一種方法:

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;
}
}
}



轉載于:https://www.cnblogs.com/genghechuang/archive/2011/10/20/2218853.html

總結

以上是生活随笔為你收集整理的C# SQLLite的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。