標籤:c# sqlite 通訊錄
我最近完成了一個項目,叫通訊錄軟體。這個是很簡單的系統,業務方面就不說了。我想分享一下,為什麼要用到sqlite資料庫。
我們在開發通訊錄的時候,就希望通訊錄在連網或者斷網的時候,都可以查詢通訊錄的資訊。那就需要將通訊錄的內容要同步到本地,sqlite是比較輕便的資料庫,非常利於儲存在本地。解決方案很簡單,連網的時候,我直接存取sql server資料庫伺服器,但是在網路不通的時候,我們只需要讀取sqlite的資料就可以了。
(1)建立sqlite表
我下載了一個SQLite Expert Professional 3工具,直接建立儲存通訊錄資訊的表。SQLite Expert Professional 3工具挺好用的,不過正式版是需要錢的。在建立資料表的過程中,我們要注意的地方就是DataTime類型的資料如何儲存。在sqlite資料庫裡面,我認為最好的方式就是將日期儲存為字串就好了,如果需要的時候,取出來再處理。
(2)引入dll
在使用sqlite資料庫的時候,我們在項目工程中引入System.Data.SQLite.dll
(3)C#使用sqlite資料庫的類
這是我們這篇文章最重要的內容,就是分享一下sqlite操作的基本類,代碼如下:
using System;using System.Collections.Generic;using System.Text;using System.Data.SQLite;using System.Data;namespace AddressBook{ class SQLiteHelper { private SQLiteConnection conn = null; private string connString = string.Empty; public string ConnString { get { return connString; } set { connString = value; } } private string err = string.Empty; public string Err { get { return err; } set { err = value; } } public SQLiteHelper() { string connString = "Data Source =" + Environment.CurrentDirectory + "/AddressBook.db"; conn = new SQLiteConnection(connString);//建立資料庫執行個體,指定檔案位置 //conn.Open();//開啟資料庫,若檔案不存在會自動建立 } /// <summary> /// 建立表 /// </summary> /// <returns></returns> public int CreateTables(string sql) { SQLiteCommand cmdCreateTable = new SQLiteCommand(sql, conn); cmdCreateTable.ExecuteNonQuery();//如果表不存在,建立資料表 return 1; } /// <summary> /// 操作資料庫 /// </summary> /// <param name="sql"></param> /// <returns></returns> public int ExecNoQuery(string sql) { int retValue = -1; try { conn.Open(); SQLiteCommand cmd = new SQLiteCommand(sql, conn); retValue = cmd.ExecuteNonQuery(); conn.Close(); } catch (Exception ex) { err = ex.Message; return -1; } return retValue; } /// <summary> /// 擷取科室資料 /// </summary> /// <returns></returns> public DataSet GetDataSet(string sql) { try { DataSet dataset = new DataSet(); SQLiteDataAdapter adapter = new SQLiteDataAdapter(); adapter.SelectCommand = new SQLiteCommand(sql, conn); adapter.Fill(dataset); return dataset; } catch (Exception ex) { err = ex.Message; return null; } } /// <summary> /// 返回1個字串 /// </summary> /// <param name="sql"></param> /// <returns></returns> public string ExecReturenOne(string sql) { string result = string.Empty; try { conn.Open(); SQLiteCommand cmd = new SQLiteCommand(sql, conn); object obj = cmd.ExecuteScalar(); if (obj != null) { result = obj.ToString(); } conn.Close(); } catch (Exception ex) { if (conn.State == System.Data.ConnectionState.Open) { conn.Close(); } err = ex.Message; return ""; } return result; } }}
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
.net調用sqlite資料庫