亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQLite > 正文

Sqlite 操作類代碼

2020-01-25 19:30:26
字體:
來源:轉載
供稿:網友
這兩天用了用SQLite,感覺比SQL CE好用多了,最主要的是性能好多了.這一點對手持設備來講很重要.閑話少說,下來將怎么在WM用.NET CF訪問SQLite.
 
 
1. ADO.NET Provider For SQLite. 
  ADO.NET 提供程序是香港(貌似)一個公司提供的.項目地址見:http://sourceforge.net/projects/sqlite-dotnet2 
  2. 對SQLite.NET的封裝,提供一個簡單的操作幫助類. 
SQLiteHelper 
復制代碼代碼如下:

/**//** 
* 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> 
/// 返回數據庫鏈接字符串 
/// </summary> 
public static string ConnString 

get { return connString; } 

/**//// <summary> 
/// 執行SQL語句,返回受影響的行數 
/// </summary> 
/// <param name="cmdText">需要被執行的SQL語句</param> 
/// <returns>受影響的行數</returns> 
public static int ExecuteNonQuery(string cmdText) 

return ExecuteNonQuery(ConnString, cmdText); 

/**//// <summary> 
/// 執行帶有事務的SQL語句 
/// </summary> 
/// <param name="trans">事務</param> 
/// <param name="cmdText">SQL語句</param> 
/// <returns>受影響的行數</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> 
/// 執行SQL語句,返回受影響的行數 
/// </summary> 
/// <param name="connString">連接字符串</param> 
/// <param name="cmdText">SQL語句</param> 
/// <param name="parameters">SQL的參數</param> 
/// <returns>受影響的行數</returns> 
public static int ExecuteNonQuery(string connString, string cmdText, params SQLiteParameter[] parameters) 

using (SQLiteConnection conn = new SQLiteConnection(connString)) 

return ExecuteNonQuery(conn, cmdText, parameters); 


/**//// <summary> 
/// 執行SQL語句,返回受影響的行數 
/// </summary> 
/// <param name="connection">數據庫鏈接</param> 
/// <param name="cmdText">SQL語句</param> 
/// <param name="parameters">參數</param> 
/// <returns>受影響的行數</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> 
/// 執行查詢,并返回結果集的第一行的第一列.其他所有的行和列被忽略. 
/// </summary> 
/// <param name="cmdText">SQL 語句</param> 
/// <returns>第一行的第一列的值</returns> 
public static object ExecuteScalar(string cmdText) 

return ExecuteScalar(ConnString, cmdText); 

/**//// <summary> 
/// 執行查詢,并返回結果集的第一行的第一列.其他所有的行和列被忽略. 
/// </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> 
/// 執行查詢,并返回結果集的第一行的第一列.其他所有的行和列被忽略. 
/// </summary> 
/// <param name="connection">數據庫鏈接</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> 
/// 執行SQL語句,返回結果集的DataReader 
/// </summary> 
/// <param name="cmdText">SQL語句</param> 
/// <param name="parameters">參數</param> 
/// <returns>結果集的DataReader</returns> 
public static SQLiteDataReader ExecuteReader(string cmdText, params SQLiteParameter[] parameters) 

return ExecuteReader(ConnString, cmdText, parameters); 

/**//// <summary> 
/// 執行SQL語句,返回結果集的DataReader 
/// </summary> 
/// <param name="connString">連接字符串</param> 
/// <param name="cmdText">SQL語句</param> 
/// <param name="parameters">參數</param> 
/// <returns>結果集的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> 
/// 預處理Command對象,數據庫鏈接,事務,需要執行的對象,參數等的初始化 
/// </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">參數實例</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. 增刪改查: 
復制代碼代碼如下:

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品久久久久久久久久入口| 日本成人在线视频网址| 精品国产乱码久久久久酒店| 国产丝袜精品第一页| 亚洲国产精品推荐| 91av网站在线播放| 久久影院中文字幕| 88国产精品欧美一区二区三区| 7777kkkk成人观看| 欧美性受xxxx白人性爽| 精品久久香蕉国产线看观看亚洲| 懂色av中文一区二区三区天美| 国产精品久久久久一区二区| 亚洲最大激情中文字幕| 国产+人+亚洲| 国产精品一区二区久久久久| 人人爽久久涩噜噜噜网站| 国产亚洲欧美另类中文| 国产成人精品一区二区三区| 国产福利精品视频| 久热精品视频在线观看一区| 久久精品美女视频网站| 亚洲a级在线观看| 亚洲天堂av图片| 久久精品国产免费观看| 亚洲国产欧美一区二区丝袜黑人| 日韩精品中文字幕在线| 色偷偷偷综合中文字幕;dd| 97视频在线免费观看| 精品综合久久久久久97| 日韩免费观看网站| 久久99精品视频一区97| 97色在线播放视频| 欧美精品在线观看91| 精品av在线播放| 裸体女人亚洲精品一区| 97在线免费观看| 欧美极品美女视频网站在线观看免费| 91精品国产综合久久久久久久久| 亚洲人成网在线播放| 69**夜色精品国产69乱| 色与欲影视天天看综合网| 在线视频欧美日韩精品| 欧美日韩国产综合新一区| 亚洲日韩第一页| 成人国产精品一区二区| 在线观看视频99| 日本午夜在线亚洲.国产| 亚洲综合国产精品| 日韩精品视频免费专区在线播放| 日韩精品视频观看| 亚洲自拍av在线| 国产深夜精品福利| 日韩精品极品在线观看播放免费视频| 另类天堂视频在线观看| 日韩欧美亚洲范冰冰与中字| 91av成人在线| 伊人久久男人天堂| 久久精品免费电影| 成人精品一区二区三区电影黑人| 亚洲人成在线一二| 亚洲国产成人精品久久久国产成人一区| 成人性生交大片免费观看嘿嘿视频| 91免费精品视频| 91夜夜未满十八勿入爽爽影院| 国产精品第二页| 久久国产精品99国产精| 国产不卡视频在线| 国产精品电影网| 91精品国产九九九久久久亚洲| 成人国产精品色哟哟| 色系列之999| 国产精品成人一区二区| 国产成人涩涩涩视频在线观看| 午夜免费日韩视频| 日韩电影在线观看永久视频免费网站| 亚洲字幕一区二区| 欧美色另类天堂2015| 亚洲www永久成人夜色| 亚洲自拍欧美另类| 在线午夜精品自拍| 福利微拍一区二区| 亚洲美女av网站| 2019中文字幕在线| 欧美黑人狂野猛交老妇| 精品国产精品自拍| 日韩在线中文字幕| 国产欧美久久久久久| 清纯唯美亚洲激情| 亚洲国产精品久久久久秋霞蜜臀| 欧美精品久久久久久久| 欧美人与物videos| 69av成年福利视频| 色妞久久福利网| 中文字幕国产精品久久| 国产精品久久色| 2019av中文字幕| 日本亚洲欧洲色| 欧美又大又粗又长| 国产亚洲欧洲高清一区| 欧美人与性动交a欧美精品| 亚洲黄在线观看| 奇米一区二区三区四区久久| 国内精品400部情侣激情| 欧美一级电影免费在线观看| 久久久精品在线| 成人在线精品视频| 欧美日韩一区二区精品| 神马久久久久久| 国产这里只有精品| 欧美性猛交xxxx乱大交极品| 欧美日韩中国免费专区在线看| 日韩色av导航| 日韩欧美中文字幕在线播放| 98精品国产高清在线xxxx天堂| www.欧美视频| 精品一区二区三区四区在线| 国产欧美精品久久久| 亚洲aaaaaa| 久久久久久久久爱| 欧美区二区三区| 亚洲最大av网站| 欧美丰满少妇xxxxx做受| 亚洲欧美一区二区三区情侣bbw| www.日韩视频| 国产精品成人av在线| 色婷婷综合成人av| 欧美裸体视频网站| 都市激情亚洲色图| 亚洲精品久久在线| 中文字幕一区电影| 一区二区三区在线播放欧美| 亚洲精品视频播放| 91在线免费看网站| 成人欧美一区二区三区在线| 97超级碰在线看视频免费在线看| 国产日韩欧美夫妻视频在线观看| 久久久视频免费观看| 91精品国产色综合| 日韩成人在线播放| 欧美激情视频网站| 亚洲白拍色综合图区| 91免费电影网站| 国产免费一区二区三区在线观看| 国产欧美精品日韩| 夜夜嗨av色一区二区不卡| 日韩福利在线播放| 日韩免费观看高清| 日韩av在线看| 91精品久久久久久久久不口人| 成人精品久久一区二区三区| 在线观看亚洲视频| 黄色精品在线看| 97国产精品视频人人做人人爱| 国产精品视频男人的天堂| 亚洲欧美国产一本综合首页| 精品国产自在精品国产浪潮| 日韩美女av在线| 91av免费观看91av精品在线| 在线色欧美三级视频| 欧美裸体xxxx极品少妇| 国产在线视频不卡| 久久网福利资源网站| 久久久国产视频|