最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Sqlite 操作類代碼

 更新時(shí)間:2009年11月15日 22:52:56   作者:  
這兩天用了用SQLite,感覺比SQL CE好用多了,最主要的是性能好多了.這一點(diǎn)對手持設(shè)備來講很重要.閑話少說,下來將怎么在WM用.NET CF訪問SQLite.
1. ADO.NET Provider For SQLite.
  ADO.NET 提供程序是香港(貌似)一個公司提供的.項(xiàng)目地址見:http://sourceforge.net/projects/sqlite-dotnet2
  2. 對SQLite.NET的封裝,提供一個簡單的操作幫助類.
SQLiteHelper
復(fù)制代碼 代碼如下:

/**//**
* SQLite操作的幫助類.
*
* Author: egmkang.wang
* Date: 2009-06-21
*/
namespace System.Data.SQLite
{
using System.Data;
using System.Data.SQLite;
using System.IO;
public class SqliteHelper
{
private static string pwd = "PWD";
private static string path = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase) + "\\sqliteTest.db";
private static string connString = string.Format("Data Source =\"{0}\"", path, pwd);
/**//// <summary>
/// 返回?cái)?shù)據(jù)庫鏈接字符串
/// </summary>
public static string ConnString
{
get { return connString; }
}
/**//// <summary>
/// 執(zhí)行SQL語句,返回受影響的行數(shù)
/// </summary>
/// <param name="cmdText">需要被執(zhí)行的SQL語句</param>
/// <returns>受影響的行數(shù)</returns>
public static int ExecuteNonQuery(string cmdText)
{
return ExecuteNonQuery(ConnString, cmdText);
}
/**//// <summary>
/// 執(zhí)行帶有事務(wù)的SQL語句
/// </summary>
/// <param name="trans">事務(wù)</param>
/// <param name="cmdText">SQL語句</param>
/// <returns>受影響的行數(shù)</returns>
public static int ExecuteNonQuery(SQLiteTransaction trans, string cmdText, params SQLiteParameter[] parameters)
{
int val = 0;
using (SQLiteCommand cmd = new SQLiteCommand())
{
PrepareCommand(cmd, (SQLiteConnection)trans.Connection, trans, cmdText, parameters);
val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
return val;
}
/**//// <summary>
/// 執(zhí)行SQL語句,返回受影響的行數(shù)
/// </summary>
/// <param name="connString">連接字符串</param>
/// <param name="cmdText">SQL語句</param>
/// <param name="parameters">SQL的參數(shù)</param>
/// <returns>受影響的行數(shù)</returns>
public static int ExecuteNonQuery(string connString, string cmdText, params SQLiteParameter[] parameters)
{
using (SQLiteConnection conn = new SQLiteConnection(connString))
{
return ExecuteNonQuery(conn, cmdText, parameters);
}
}
/**//// <summary>
/// 執(zhí)行SQL語句,返回受影響的行數(shù)
/// </summary>
/// <param name="connection">數(shù)據(jù)庫鏈接</param>
/// <param name="cmdText">SQL語句</param>
/// <param name="parameters">參數(shù)</param>
/// <returns>受影響的行數(shù)</returns>
public static int ExecuteNonQuery(SQLiteConnection connection, string cmdText, params SQLiteParameter[] parameters)
{
int val = 0;
using (SQLiteCommand cmd = new SQLiteCommand())
{
PrepareCommand(cmd, connection, null, cmdText, parameters);
val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
return val;
}
/**//// <summary>
/// 執(zhí)行查詢,并返回結(jié)果集的第一行的第一列.其他所有的行和列被忽略.
/// </summary>
/// <param name="cmdText">SQL 語句</param>
/// <returns>第一行的第一列的值</returns>
public static object ExecuteScalar(string cmdText)
{
return ExecuteScalar(ConnString, cmdText);
}
/**//// <summary>
/// 執(zhí)行查詢,并返回結(jié)果集的第一行的第一列.其他所有的行和列被忽略.
/// </summary>
/// <param name="connString">連接字符串</param>
/// <param name="cmdText">SQL 語句</param>
/// <returns>第一行的第一列的值</returns>
public static object ExecuteScalar(string connString, string cmdText)
{
using (SQLiteConnection conn = new SQLiteConnection(connString))
{
return ExecuteScalar(conn, cmdText);
}
}
/**//// <summary>
/// 執(zhí)行查詢,并返回結(jié)果集的第一行的第一列.其他所有的行和列被忽略.
/// </summary>
/// <param name="connection">數(shù)據(jù)庫鏈接</param>
/// <param name="cmdText">SQL 語句</param>
/// <returns>第一行的第一列的值</returns>
public static object ExecuteScalar(SQLiteConnection connection, string cmdText)
{
object val;
using (SQLiteCommand cmd = new SQLiteCommand())
{
PrepareCommand(cmd, connection, null, cmdText);
val = cmd.ExecuteScalar();
}
return val;
}
/**//// <summary>
/// 執(zhí)行SQL語句,返回結(jié)果集的DataReader
/// </summary>
/// <param name="cmdText">SQL語句</param>
/// <param name="parameters">參數(shù)</param>
/// <returns>結(jié)果集的DataReader</returns>
public static SQLiteDataReader ExecuteReader(string cmdText, params SQLiteParameter[] parameters)
{
return ExecuteReader(ConnString, cmdText, parameters);
}
/**//// <summary>
/// 執(zhí)行SQL語句,返回結(jié)果集的DataReader
/// </summary>
/// <param name="connString">連接字符串</param>
/// <param name="cmdText">SQL語句</param>
/// <param name="parameters">參數(shù)</param>
/// <returns>結(jié)果集的DataReader</returns>
public static SQLiteDataReader ExecuteReader(string connString, string cmdText, params SQLiteParameter[] parameters)
{
SQLiteConnection conn = new SQLiteConnection(connString);
SQLiteCommand cmd = new SQLiteCommand();
try
{
PrepareCommand(cmd, conn, null, cmdText, parameters);
SQLiteDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return rdr;
}
catch
{
conn.Close();
throw;
}
}
/**//// <summary>
/// 預(yù)處理Command對象,數(shù)據(jù)庫鏈接,事務(wù),需要執(zhí)行的對象,參數(shù)等的初始化
/// </summary>
/// <param name="cmd">Command對象</param>
/// <param name="conn">Connection對象</param>
/// <param name="trans">Transcation對象</param>
/// <param name="cmdText">SQL Text</param>
/// <param name="parameters">參數(shù)實(shí)例</param>
private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, SQLiteTransaction trans, string cmdText, params SQLiteParameter[] parameters)
{
if (conn.State != ConnectionState.Open)
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
if (trans != null)
cmd.Transaction = trans;
if (null != parameters && parameters.Length > 0)
{
cmd.Parameters.AddRange(parameters);
}
}
}
}

  3. 增刪改查:
復(fù)制代碼 代碼如下:

Insert,Delete,Update
const string s_AddressTreeIntoSQLite = "Insert into [AddressTree] ([Id],[ItemType],[ParentId],[Name]) values (@Id,@ItemType,@ParentId,@Name);";
SqliteHelper.ExecuteNonQuery(tran, s_AddressTreeIntoSQLite,
//new SQLiteParameter[] here
);
Select
const string s_AddresTreeFromSqlCE = "Select [Id],[ItemType],[ParentId],[Name] From [AddressTree];";
using (SqlCeDataReader rdr = SqlCeHelper.ExecuteReader(s_AddresTreeFromSqlCE ))
{
while (rdr.Read())
{
//Read Data Here
}
}

  4. 其他
  SQLite性能絕對強(qiáng)悍.四表連接查詢,查詢200次,SQL CE需要44秒(with index),SQLite只需要3-6秒(with index).
插入,刪除更新性能參見http://www.cnblogs.com/egmkang/archive/2009/06/06/1497678.html
  PS:最近發(fā)現(xiàn)執(zhí)行sql的時(shí)候,最好使用單一的長連接,而不是ConnectionString.原因很簡單,嵌入式數(shù)據(jù)庫沒有連接池技術(shù),
在進(jìn)行數(shù)據(jù)庫查詢中的鏈接的打開關(guān)閉費(fèi)用相對來說比較高昂.這一點(diǎn)在寫程序的時(shí)候注意以下.
  還有,有關(guān)二進(jìn)制資源,需要及時(shí)釋放,例如SqlCommand,這些在寫Web 程序的時(shí)候體驗(yàn)不是很大,畢竟那種環(huán)境擁有大量
的內(nèi)存,GC的效率又是比較高.

相關(guān)文章

  • CentOS下更新SQLite版本

    CentOS下更新SQLite版本

    SQLite是一個軟件庫,實(shí)現(xiàn)了自給自足的、無服務(wù)器的、零配置的、事務(wù)性的 SQL 數(shù)據(jù)庫引擎。這篇文章主要介紹了CentOS下更新SQLite版本,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-12-12
  • SQLite教程(十二):鎖和并發(fā)控制詳解

    SQLite教程(十二):鎖和并發(fā)控制詳解

    這篇文章主要介紹了SQLite教程(十二):鎖和并發(fā)控制詳解,本文講解了鎖和并發(fā)控制機(jī)制概述、文件鎖、回滾日志、數(shù)據(jù)寫入、SQL級別的事務(wù)控制等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • SQLite字符串比較時(shí)的大小寫問題解決方法

    SQLite字符串比較時(shí)的大小寫問題解決方法

    這篇文章主要介紹了SQLite字符串比較時(shí)的大小寫問題解決方法,本文總結(jié)了比較字符串時(shí)的大小寫問題的3種解決方案,需要的朋友可以參考下
    2015-03-03
  • 保護(hù)你的Sqlite數(shù)據(jù)庫(SQLite數(shù)據(jù)庫安全秘籍)

    保護(hù)你的Sqlite數(shù)據(jù)庫(SQLite數(shù)據(jù)庫安全秘籍)

    相信使用PHP開發(fā)的人員一定不會對SQLite感到陌生了,PHP5已經(jīng)集成了這個輕量型的數(shù)據(jù)庫。并且很多虛擬主機(jī)無論是win還是*nux都支持它。
    2009-08-08
  • sqlite中文亂碼問題原因分析及解決

    sqlite中文亂碼問題原因分析及解決

    打開數(shù)據(jù)庫,插入,查詢數(shù)據(jù)庫等,如果操作接口輸入?yún)?shù)包含中文字符,會導(dǎo)致操作異常,這是由于sqlite數(shù)據(jù)庫使用的是UTF-8編碼方式
    2013-04-04
  • SQLite 性能優(yōu)化實(shí)例分享

    SQLite 性能優(yōu)化實(shí)例分享

    本文給大家分享的是個人在實(shí)際項(xiàng)目中對于sqlite的一次優(yōu)化的記錄,非常簡單實(shí)用,希望對大家學(xué)習(xí)sqlite能夠有所幫助。
    2016-02-02
  • 一篇文章帶你掌握SQLite3基本用法

    一篇文章帶你掌握SQLite3基本用法

    SQLite是一款輕型的數(shù)據(jù)庫,它的設(shè)計(jì)目標(biāo)是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,下面這篇文章主要給大家介紹了關(guān)于SQLite3基本用法的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • SQLite速度評測代碼

    SQLite速度評測代碼

    SQLite 作為一個輕量級嵌入式數(shù)據(jù)庫,還是非常好用的。雨痕極力推薦~~~~~~
    2008-09-09
  • Win11下基于VS2022編譯SQLite3源碼的實(shí)現(xiàn)步驟

    Win11下基于VS2022編譯SQLite3源碼的實(shí)現(xiàn)步驟

    本文主要介紹了Win11下基于VS2022編譯SQLite3源碼的實(shí)現(xiàn)步驟,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09
  • SQL中使用ESCAPE定義轉(zhuǎn)義符詳解

    SQL中使用ESCAPE定義轉(zhuǎn)義符詳解

    這篇文章主要介紹了SQL中使用ESCAPE定義轉(zhuǎn)義符的相關(guān)資料,需要的朋友可以參考下
    2016-09-09

最新評論

湛江市| 凤阳县| 都兰县| 雷波县| 西乌珠穆沁旗| 大丰市| 博罗县| 盈江县| 唐海县| 郯城县| 贺兰县| 肥东县| 安福县| 梅河口市| 青田县| 阿图什市| 集安市| 合阳县| 黄石市| 剑河县| 商丘市| 福安市| 乡城县| 通许县| 石景山区| 新营市| 进贤县| 临城县| 大埔县| 垫江县| 宁城县| 宜昌市| 龙游县| 宜宾市| 和田市| 天全县| 汪清县| 肇东市| 建德市| 兰考县| 北宁市|