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

首頁(yè) > 數(shù)據(jù)庫(kù) > SQLite > 正文

Sqlite 操作類(lèi)代碼

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

/**//** 
* SQLite操作的幫助類(lèi). 

* 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ù)庫(kù)鏈接字符串 
/// </summary> 
public static string ConnString 

get { return connString; } 

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

return ExecuteNonQuery(ConnString, cmdText); 

/**//// <summary> 
/// 執(zhí)行帶有事務(wù)的SQL語(yǔ)句 
/// </summary> 
/// <param name="trans">事務(wù)</param> 
/// <param name="cmdText">SQL語(yǔ)句</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語(yǔ)句,返回受影響的行數(shù) 
/// </summary> 
/// <param name="connString">連接字符串</param> 
/// <param name="cmdText">SQL語(yǔ)句</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語(yǔ)句,返回受影響的行數(shù) 
/// </summary> 
/// <param name="connection">數(shù)據(jù)庫(kù)鏈接</param> 
/// <param name="cmdText">SQL語(yǔ)句</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í)行查詢(xún),并返回結(jié)果集的第一行的第一列.其他所有的行和列被忽略. 
/// </summary> 
/// <param name="cmdText">SQL 語(yǔ)句</param> 
/// <returns>第一行的第一列的值</returns> 
public static object ExecuteScalar(string cmdText) 

return ExecuteScalar(ConnString, cmdText); 

/**//// <summary> 
/// 執(zhí)行查詢(xún),并返回結(jié)果集的第一行的第一列.其他所有的行和列被忽略. 
/// </summary> 
/// <param name="connString">連接字符串</param> 
/// <param name="cmdText">SQL 語(yǔ)句</param> 
/// <returns>第一行的第一列的值</returns> 
public static object ExecuteScalar(string connString, string cmdText) 

using (SQLiteConnection conn = new SQLiteConnection(connString)) 

return ExecuteScalar(conn, cmdText); 


/**//// <summary> 
/// 執(zhí)行查詢(xún),并返回結(jié)果集的第一行的第一列.其他所有的行和列被忽略. 
/// </summary> 
/// <param name="connection">數(shù)據(jù)庫(kù)鏈接</param> 
/// <param name="cmdText">SQL 語(yǔ)句</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語(yǔ)句,返回結(jié)果集的DataReader 
/// </summary> 
/// <param name="cmdText">SQL語(yǔ)句</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語(yǔ)句,返回結(jié)果集的DataReader 
/// </summary> 
/// <param name="connString">連接字符串</param> 
/// <param name="cmdText">SQL語(yǔ)句</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對(duì)象,數(shù)據(jù)庫(kù)鏈接,事務(wù),需要執(zhí)行的對(duì)象,參數(shù)等的初始化 
/// </summary> 
/// <param name="cmd">Command對(duì)象</param> 
/// <param name="conn">Connection對(duì)象</param> 
/// <param name="trans">Transcation對(duì)象</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性能絕對(duì)強(qiáng)悍.四表連接查詢(xún),查詢(xún)200次,SQL CE需要44秒(with index),SQLite只需要3-6秒(with index). 
插入,刪除更新性能參見(jiàn)http://www.cnblogs.com/egmkang/archive/2009/06/06/1497678.html 
  PS:最近發(fā)現(xiàn)執(zhí)行sql的時(shí)候,最好使用單一的長(zhǎng)連接,而不是ConnectionString.原因很簡(jiǎn)單,嵌入式數(shù)據(jù)庫(kù)沒(méi)有連接池技術(shù), 
在進(jìn)行數(shù)據(jù)庫(kù)查詢(xún)中的鏈接的打開(kāi)關(guān)閉費(fèi)用相對(duì)來(lái)說(shuō)比較高昂.這一點(diǎn)在寫(xiě)程序的時(shí)候注意以下. 
  還有,有關(guān)二進(jìn)制資源,需要及時(shí)釋放,例如SqlCommand,這些在寫(xiě)Web 程序的時(shí)候體驗(yàn)不是很大,畢竟那種環(huán)境擁有大量 
的內(nèi)存,GC的效率又是比較高.

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
无遮挡h肉3d动漫在线观看| 在线无限看免费粉色视频| 久久久久久久欧美精品| 欧美另类videos粗暴黑人| 亚洲日韩第一页| 精品无码av一区二区三区| 97香蕉久久| 欧美成人手机在线视频| 亚洲一区成人| 欧美性一区二区| 日韩大片在线免费观看| 午夜免费福利小电影| 免费看av的网址| 中文字幕一区二区三区视频| 亚洲h精品动漫在线观看| 老司机精品视频一区二区| 国产美女精品视频免费播放软件| 影音先锋一区二区资源站| 蜜桃久久精品一区二区| 欧美日韩一区国产| 欧美激情性xxxxx| 男人的天堂色| av黄色一级片| 日韩一区在线免费观看| 国产免费内射又粗又爽密桃视频| 97欧美精品一区二区三区| 黄色片子在线观看| 成年人深夜视频| 91久久久久久| 亚洲自拍另类| 忘忧草在线影院两性视频| 亚洲免费影视第一页| 欧美亚视频在线中文字幕免费| 深夜福利免费在线观看| 亚洲一区二区久久久久久| 欧美1级日本1级| 黄色三级网站在线观看| 欧美另类极品videosbest视频| 日韩一区二区三区在线观看视频| 永久免费未满蜜桃| 欧美性猛交xxxx免费看久久久| 日本性视频网| 国产精品成人网站| 嫩草一区二区三区| 91美女在线观看| 国产精品嫩模av在线| 国产娇喘精品一区二区三区图片| 日韩欧美视频在线| 青青草视频在线免费直播| 韩国精品视频| 在线观看黄色小视频| 狠狠躁天天躁日日躁欧美| 色伦专区97中文字幕| 亚洲视频在线一区二区| 久久三级毛片| 精品成人免费一区二区在线播放| 男人的天堂官网| 国产精品久久久一区麻豆最新章节| 欧美日韩第一| 国产亚洲欧美日韩一区二区| 久久国产精品电影| 亚洲欧洲日产国产网站| 国产日本久久| 九一在线视频| 国产激情综合五月久久| 国产乱对白刺激视频不卡| 国产免费av网站| av毛片在线免费观看| 丰满熟女人妻一区二区三区| 和岳每晚弄的高潮嗷嗷叫视频| 国产精品久久久久久久| 久久发布国产伦子伦精品| 黄瓜视频成人app免费| 国产精品欧美激情| 欧美妇乱xxxxx视频| 国产对白videos麻豆高潮| 青青草国产免费一区二区下载| 国产三级伦理片| 国产卡一卡2卡三卡免费视频| jizzjizz日本护士免费| 亚洲久久一区二区| 欧美xxxx黑人又粗又长精品| 老太脱裤子让老头玩xxxxx| 在线日韩一区二区| 亚洲AV午夜精品| 777米奇影视第四色| 天堂av2024| 成人做爰69片免费看网站| 久久精品亚洲国产| 久久精品国产99精品国产亚洲性色| 翔田千里一区二区| 19j韩国主播韩宝贝在线| 老司机免费视频一区二区| 日韩中文第一页| 亚洲国产91视频| 欧美高清激情brazzers| 日韩欧美亚洲在线| 精品二区在线观看| 久久久久九九精品影院| 久久久国产一区二区| 国产精品视频一区二区三区| 久热中文字幕精品视频在线| 国产精品视频久久久久久| 国产精品av久久久久久麻豆网| 亚洲欧美日韩直播| 日韩av电影资源网| 天天综合亚洲| 国产亚洲精品精华液| 免费看一级黄色| 国产成人福利夜色影视| 久久免费视频66| 久久久久亚洲精品一区二区三区| www.国产精品一二区| 日韩中文字幕免费看| 精品一区二区三区在线观看视频| 久久精品国产久精国产爱| 东热在线免费视频| 美女福利网站视频在线观看| 国产成人一区二区三区| 日本一二三四区视频| 一本大道久久a久久综合| 欧美日韩国产在线观看| 亚洲综合网站久久久| 香蕉视频在线免费看| 欧美四级剧情无删版影片| 中文字幕在线观看视频免费| 免费黄色网址在线| 99精品欧美一区二区| 亚洲人成影院77777| 亚洲无吗一区二区三区| 久久综合一区二区三区| 欧美做受高潮6| av网站大全在线| 成人在线免费公开观看视频| 久久精品国产亚洲av久| 天天看天天摸天天操| 欧美一区二区免费观在线| 日韩欧美亚洲区| 青娱乐国产精品| 欧美影院一区二区| 国产在线拍揄自揄拍| 亚洲一区二区四区| www.天天射.com| 精品国产一区二区三区四区vr| 九色视频网址| 色噜噜狠狠狠综合曰曰曰88av| 成人黄色中文字幕| 制服视频三区第一页精品| 欧美一级播放| 一区二区三区电影网| av在线播放一区二区三区| 亚洲五码在线观看视频| 欧美三级韩国三级日本三斤| 久久福利精品| 韩国成人二区| 国产呦系列欧美呦日韩呦| 国产精品老女人精品视频| 日韩中文有码在线视频| 亚洲精品7777xxxx青睐| 国产美女主播在线播放| 久久久久久久久久久久久久| 69久久夜色精品国产69蝌蚪网| 久久久人成影片免费观看| 天堂8中文在线最新版在线| 国产精品视频二区三区| 懂色av一区二区三区四区| 好吊色视频一区二区三区| 久久av一区二区三区| 久久青草国产手机看片福利盒子| blackedav金发美女大战黑人| 欧美性受xxxx黑人xyx性爽| 图片小说视频色综合| 奇米视频888战线精品播放| 欧美人与动性xxxxbbbb| 欧美亚洲色图校园春色| 99久热在线精品视频观看| 国产精品久久久久久久久久三级| 日韩在线视频在线| 免费精品一区二区三区在线观看| 亚洲永久免费观看| 成全电影播放在线观看国语| 日本一区二区三区dvd视频在线| 精品孕妇一区二区三区| 国产真人真事毛片| 欧美日韩国产一二| 91麻豆精品91久久久久同性| 激情偷乱视频一区二区三区| 日韩大片免费在线观看| www.com污| 久久av影视| 亚洲大片精品永久免费| 日本欧美一区二区三区| 成人高潮视频| 精品99久久| 亚洲精品一区av| 成人激情文学综合网| 国产激情综合五月久久| 国产激情二区| 高h震动喷水双性1v1| 狠狠操图片视频| 丁香花在线高清完整版视频| 中文亚洲免费| 一本一道久久久a久久久精品91| 日本久久久久久久久久久久| 黄色网址免费在线观看| 色偷偷综合社区| 亚洲人成网站精品片在线观看| 伊人成人在线| 日日摸天天添天天添破| 国产午夜免费视频| 一区二区理论电影在线观看| 91丨九色丨蝌蚪丨少妇在线观看| 免费成人你懂的| 老女人性淫交视频| 日韩精品电影一区亚洲| jizzjizzjizz中国| 自己做鸭怎么接单寻找客源| 欧美大喷水吹潮合集在线观看| 美女一区二区视频| 色视频欧美一区二区三区| 在线观看的毛片| 国产视频1区2区3区| 奴色虐av一区二区三区| 亚洲综合欧美| 国产日韩三区| 国产成人精品在线观看| 国产三级短视频| 波多野结衣在线一区二区| av免费在线不卡| 欧美视频官网| 久久人妻少妇嫩草av无码专区| 天堂v视频永久在线播放| 天堂av资源在线| 黄色片中文字幕| 久久久久国产精品区片区无码| 91在线精品秘密一区二区| 日韩欧美在线免费| 在线一级成人| 日韩电影在线观看永久视频免费网站| 国产毛片在线| 精品裸体舞一区二区三区| 亚洲成av人影院在线观看网| 蜜桃色一区二区三区| 丁香久久五月| 一本一道综合狠狠老| 国产乱码久久久久久| 国产在线精品一区二区三区| 日韩女优在线播放| 高清孕妇孕交╳╳交| 国产91色蝌蚪视频| 久久久久亚洲AV成人网人人小说| 一区二区三区 在线观看视频| 欧美中文在线| 欧美日韩大尺度| 青青在线视频一区二区三区| 日本vs亚洲vs韩国一区三区| 日本三级在线视频| 精品久久久久久亚洲国产300| 国产精品无码乱伦| 亚洲国产国产| av片免费观看| 欧美777四色影视在线| 性日韩欧美在线视频| 老鸭窝一区二区| 亚洲亚洲人成综合网络| 成年人免费观看的视频| 视频一区二区三区不卡| 99精品视频在线观看播放| 黑人巨大国产9丨视频| 成人女保姆的销魂服务| 日韩国产欧美精品| 成人久久久久爱| 欧美日韩日日夜夜| 天堂√中文最新版在线| 日日夜夜天天综合入口| 欧美日韩国产精品成人| 久久免费少妇高潮99精品| 一菊综合网成人综合网| 亚洲一区二区精品在线| 亚洲精品2区| 欧美特黄一级| 正在播放日韩欧美一页| 在线观看中文字幕2021| 久久人人爽人人爽人人片av免费| 国产小视频你懂的| 一区二区三区欧美| 中文字幕不卡每日更新1区2区| japansex久久高清精品| 和岳每晚弄的高潮嗷嗷叫视频| 国产黄a三级三级三级| 永久免费无码av网站在线观看| 亚洲天堂av片| 中文字幕乱码在线播放| 宅男网站在线免费观看| 日本xxxx裸体xxxx| 性欧美18一19sex性欧美| 亚洲小少妇裸体bbw| 国产又粗又猛又爽又黄的视频小说| 粉嫩欧美一区二区三区| 国产亚洲人成网站| 欧美午夜片在线观看| 精品国产一区二区三区免费| 亚洲高清毛片| 噜噜噜天天躁狠狠躁夜夜精品| 一本一道久久综合狠狠老精东影业| 在线日韩日本国产亚洲| 久久综合九色综合97婷婷| 欧美一区二区三区高清视频| 欧美日韩中文字幕在线播放| 日韩欧美网址| 欧美又大又粗又长| 最新电影电视剧在线观看免费观看| 日韩精品成人一区| 国产女同一区二区| a√天堂在线观看| 九九九久久国产免费| 国产女主播喷水高潮网红在线| 91成人综合网| 一级黄色免费片| 四虎成人永久免费视频| 日本天堂影院在线视频| 免费日韩av电影| av成人网在线| 久久久久毛片| 国产成人精品福利| 伊人网站在线| 欧美一级大片在线观看| 亚洲第一成年人网站|