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

Sqlite 常用函數(shù)封裝提高Codeeer的效率

 更新時間:2012年12月27日 15:22:47   作者:  
以下是頻繁用到的Sqlite函數(shù),內(nèi)容格式相對固定,封裝一下有助于提高開發(fā)效率^_^至少提高Codeeer的效率了
以下是頻繁用到的Sqlite函數(shù),內(nèi)容格式相對固定,封裝一下有助于提高開發(fā)效率(^_^至少提高Codeeer的效率了)

而且,我發(fā)現(xiàn)Sqlite中文資料比較少,起碼相對其他找起來要復(fù)雜些,服務(wù)一下大眾~
我沒有封裝讀取部分,因為數(shù)據(jù)庫讀取靈活性太大,封裝起來難度也大,而且就算封裝好了,也難以應(yīng)付所有情況,還是建議根據(jù)實際情況設(shè)計代碼邏輯。

創(chuàng)建
復(fù)制代碼 代碼如下:

/// <summary>
/// Creat New Sqlite File
/// </summary>
/// <param name="NewTable">New Table Name</param>
/// <param name="NewWords">Words list of the New Table</param>
/// <returns>IsSuccessful</returns>
public static bool Creat(string DataSource, string NewTable, List<string> NewWords)
{
try
{
//Creat Data File
SQLiteConnection.CreateFile(DataSource);
//Creat Table
using (DbConnection conn = SQLiteFactory.Instance.CreateConnection())
{
//Connect
conn.ConnectionString = "Data Source=" + DataSource;
conn.Open();
//Creat
string Bazinga = "create table [" + NewTable + "] (";
foreach (string Words in NewWords)
{
Bazinga += "[" + Words + "] BLOB COLLATE NOCASE,";
}
//Set Primary Key
//The Top item from the "NewWords"
Bazinga += @"PRIMARY KEY ([" + NewWords[0] + "]))";
DbCommand cmd = conn.CreateCommand();
cmd.Connection = conn;
cmd.CommandText = Bazinga;
cmd.ExecuteNonQuery();
}
return true;
}
catch (Exception E)
{
MessageBox.Show(E.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return false;
}
}

刪除
復(fù)制代碼 代碼如下:

/// <summary>
/// Delete Date
/// </summary>
/// <param name="DataSource"></param>
/// <param name="TargetTable"></param>
/// <param name="Word"></param>
/// <param name="Value"></param>
/// <returns></returns>
public static bool Delete(string DataSource, string TargetTable, string Word, string Value)
{
try
{
//Connect
using (DbConnection conn = SQLiteFactory.Instance.CreateConnection())
{
conn.ConnectionString = "Data Source=" + DataSource;
conn.Open();
DbCommand cmd = conn.CreateCommand();
cmd.Connection = conn;
//Delete
cmd.CommandText = "Delete From " + TargetTable + " where [" + Word + "] = '" + Value + "'";
cmd.ExecuteNonQuery();
}
return true;
}
catch (Exception E)
{
MessageBox.Show(E.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return false;
}
}

插入
這里要說明下,因為存在多字段同時插入的情況(何止存在,很普遍- -。沒見過誰的數(shù)據(jù)庫像意大利面條一樣)

在這里設(shè)計了Insert結(jié)構(gòu)用以儲存字段和值的關(guān)系(曾考慮過用數(shù)組的辦法實現(xiàn),可是那玩意不太方便調(diào)用,瞅著挺抽象的,不太好用,如果有更好的建議,歡迎留言~)
復(fù)制代碼 代碼如下:

/// <summary>
/// Use to format Insert column's value
/// </summary>
public struct InsertBag
{
public string ColumnName;
public string Value;
public InsertBag(string Column, string value)
{
ColumnName = Column;
Value = value;
}
}

以下為插入模塊的主函數(shù)
復(fù)制代碼 代碼如下:

/// <summary>
/// Insert Data
/// </summary>
/// <param name="DataSource"></param>
/// <param name="TargetTable"></param>
/// <param name="InsertBags">struck of InsertBag</param>
/// <returns></returns>
public static bool Insert(string DataSource, string TargetTable, List<InsertBag> InsertBags)
{
try
{
using (DbConnection conn = SQLiteFactory.Instance.CreateConnection())
{
//Connect Database
conn.ConnectionString = "Data Source=" + DataSource;
conn.Open();
//Deal InsertBags
StringBuilder ColumnS = new StringBuilder();
StringBuilder ValueS = new StringBuilder();
for (int i = 0; i < InsertBags.Count; i++)
{
ColumnS.Append(InsertBags[i].ColumnName + ",");
ValueS.Append("'" + InsertBags[i].Value + "',");
}
if (InsertBags.Count == 0)
{
throw new Exception("InsertBag 數(shù)據(jù)包為空,睜大你的狗眼……");
}
else
{
//Drop the last "," from the ColumnS and ValueS
ColumnS = ColumnS.Remove(ColumnS.Length - 1, 1);
ValueS = ValueS.Remove(ValueS.Length - 1, 1);
}
//Insert
DbCommand cmd = conn.CreateCommand();
cmd.CommandText = "insert into [" + TargetTable + "] (" + ColumnS.ToString() + ") values (" + ValueS.ToString() + ")";
cmd.ExecuteNonQuery();
return true;
}
}
catch (Exception E)
{
MessageBox.Show(E.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return false;
}
}

目測有點復(fù)雜呢,來個Demo,有必要說下,“W2”和“W44”是已經(jīng)設(shè)計好的字段,而“TableTest”是已經(jīng)添加好的表段
復(fù)制代碼 代碼如下:

List<Sqlite.InsertBag> Lst = new List<Sqlite.InsertBag>();
Lst.Add(new Sqlite.InsertBag("W2", "222222222"));
Lst.Add(new Sqlite.InsertBag("W44", "4444444"));
Sqlite.Insert(@"D:\1.Sql3", "TableTest", Lst);

表段獲取
復(fù)制代碼 代碼如下:

/// <summary>
/// Get Tables From Sqlite
/// </summary>
/// <returns>list of Tables</returns>
public static List<string> GetTables(string DataSource)
{
List<string> ResultLst = new List<string>();
using (SQLiteConnection conn = new SQLiteConnection("Data Source=" + DataSource))
{
conn.Open();
using (SQLiteCommand tablesGet = new SQLiteCommand("SELECT name from sqlite_master where type='table'", conn))
{
using (SQLiteDataReader tables = tablesGet.ExecuteReader())
{
while (tables.Read())
{
try
{
ResultLst.Add(tables[0].ToString());
}
catch (Exception E)
{
MessageBox.Show(E.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
}
}
return ResultLst;
}

字段獲取
復(fù)制代碼 代碼如下:

/// <summary>
/// Get Words From Table->Sqlite
/// </summary>
/// <param name="TargetTable">Target Table</param>
/// <returns>list of Words</returns>
public static List<string> GetWords(string DataSource,string TargetTable)
{
List<string> WordsLst = new List<string>();
using (SQLiteConnection conn = new SQLiteConnection("Data Source=" + DataSource))
{
conn.Open();
using (SQLiteCommand tablesGet = new SQLiteCommand(@"SELECT * FROM " + TargetTable, conn))
{
using (SQLiteDataReader Words = tablesGet.ExecuteReader())
{
try
{
for (int i = 0; i < Words.FieldCount; i++)
{
WordsLst.Add(Words.GetName(i));
}
}
catch (Exception E)
{
MessageBox.Show(E.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
}
return WordsLst;
}

解釋下,為啥代碼中的注釋基本都用英文寫了,因為這段時間在學(xué)雙拼- -??墒沁€不太熟悉,打字超慢,而且Code的時候容易打斷思路,好在~英文不多,而且這些都看不懂的話你……你要向我解釋一下你是怎么一路學(xué)到數(shù)據(jù)庫的 0。

相關(guān)文章

  • Xamarin.Forms在安卓機上進行本機調(diào)試

    Xamarin.Forms在安卓機上進行本機調(diào)試

    這篇文章介紹了Xamarin.Forms在安卓機上進行本機調(diào)試的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02
  • .NET 資源文件resx、Resources詳細說明

    .NET 資源文件resx、Resources詳細說明

    和大家講一下.net對資源文件的使用做一下說明,希望本文對你有所幫助。
    2010-03-03
  • 在asp.net中實現(xiàn)datagrid checkbox 全選的方法

    在asp.net中實現(xiàn)datagrid checkbox 全選的方法

    在asp.net中實現(xiàn)datagrid checkbox 全選的方法...
    2006-12-12
  • c# 可變數(shù)目參數(shù)params實例

    c# 可變數(shù)目參數(shù)params實例

    一般來說,參數(shù)個數(shù)都是固定的,定義為集群類型的參數(shù)可以實現(xiàn)可變數(shù)目參數(shù)的目的,但是.NET提供了更靈活的機制來實現(xiàn)可變數(shù)目參數(shù),這就是使用params修飾符
    2012-11-11
  • C#基礎(chǔ)之數(shù)據(jù)類型轉(zhuǎn)換

    C#基礎(chǔ)之數(shù)據(jù)類型轉(zhuǎn)換

    簡單認識顯式轉(zhuǎn)換和隱式轉(zhuǎn)換     我們就從下面這段代碼段開始吧
    2013-02-02
  • ASP.NET Core使用GraphQL第一章之Hello World

    ASP.NET Core使用GraphQL第一章之Hello World

    這篇文章主要給大家介紹了關(guān)于ASP.NET Core使用GraphQL第一章之Hello World的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • ASP.NET Core Zero模塊系統(tǒng)講解

    ASP.NET Core Zero模塊系統(tǒng)講解

    本文詳細講解了ASP.NET Core Zero模塊系統(tǒng),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02
  • WPF數(shù)據(jù)綁定中的RelativeSource屬性

    WPF數(shù)據(jù)綁定中的RelativeSource屬性

    這篇文章介紹了WPF數(shù)據(jù)綁定中的RelativeSource屬性,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C# 根據(jù)ip獲取城市等相關(guān)信息

    C# 根據(jù)ip獲取城市等相關(guān)信息

    本文將實現(xiàn):得到真實IP以及所在地詳細信息/通過IP得到IP所在地省市/獲取HTML源碼信息,感興趣的朋友不妨了解一下,或許對你鞏固所學(xué)知識有所幫助
    2013-01-01
  • asp.net 身份驗證機制實例代碼

    asp.net 身份驗證機制實例代碼

    對于ASP.NET驗證機制在項目開發(fā)中運用,會使項目非常方便快捷的實現(xiàn)頁面的訪問權(quán)限問題,而且省去了一些沒必要的安全問題
    2012-06-06

最新評論

金秀| 济宁市| 玛纳斯县| 锦屏县| 甘孜| 定边县| 泽库县| 鱼台县| 新化县| 布拖县| 博客| 湖口县| 黔江区| 晋江市| 新安县| 高要市| 阜城县| 遵化市| 玉龙| 大洼县| 盈江县| 丰宁| 富裕县| 洞口县| 古浪县| 图们市| 黑水县| 兴和县| 玉屏| 鄂尔多斯市| 赫章县| 商水县| 姚安县| 兴山县| 双桥区| 满洲里市| 奎屯市| 常熟市| 磴口县| 鄂托克前旗| 铜梁县|