C#中如何使用SQLite資料庫
阿新 • • 發佈:2019-02-17
class SQLiteHelper
{
public static SQLiteConnection conn = null;
public static string tableName = "msg_record";
/**
* 獲取資料庫連結
*/
public static SQLiteConnection getSQLConnection()
{
SQLiteConnection conn = null;
string dbPath = "Data Source =" + Environment.CurrentDirectory + "/MsgRecord.db";
conn = new SQLiteConnection(dbPath);//建立資料庫例項,指定檔案位置
return conn;
}
/**
* 釋放連結
*/
public static void releaseSQLConnection()
{
if (conn != null)
{
conn.Close();
}
}
/**
* 獲取SQLcmd
*/
public static SQLiteCommand getSQLCommand()
{
if (conn == null)
{
conn = getSQLConnection();
}
string dbPath = "Data Source =" + Environment.CurrentDirectory + "/MsgRecord.db";
conn = new SQLiteConnection(dbPath);//建立資料庫例項,指定檔案位置
SQLiteCommand cmd = new SQLiteCommand(conn);
return cmd;
}
/// <summary>
/// 對SQLite資料庫執行增刪改操作,返回受影響的行數。
/// </summary>
/// <param name="sql">要執行的增刪改的SQL語句</param>
/// <param name="parameters">執行增刪改語句所需要的引數,引數必須以它們在SQL語句中的順序為準</param>
/// <returns></returns>
public static int ExecuteNonQuery(string sql, SQLiteParameter[] parameters)
{
int affectedRows = 0;
using (SQLiteConnection connection = new SQLiteConnection(getSQLConnection()))
{
connection.Open();
using (DbTransaction transaction = connection.BeginTransaction())
{
using (SQLiteCommand command = new SQLiteCommand(connection))
{
command.CommandText = sql;
if (parameters != null)
{
command.Parameters.AddRange(parameters);
}
affectedRows = command.ExecuteNonQuery();
}
transaction.Commit();
}
}
return affectedRows;
}
//根據uin和userName查詢結果
public static List<MsgDetail> findMsgDetails(string uin,string userName,string RemarkName)
{
string sql = "select * from " + tableName + " where uin ='" + uin + "' and ( userName = '" + userName + "'or remarkName = '"+RemarkName+"')";
SQLiteConnection connection = new SQLiteConnection(getSQLConnection());
connection.Open();
SQLiteCommand cmd = connection.CreateCommand();
cmd.CommandText = sql;
SQLiteDataReader reader = cmd.ExecuteReader();
List<MsgDetail> data = null;
if(reader.HasRows){
data = new List<MsgDetail>();
while(reader.Read()){
MsgDetail detail = new MsgDetail();
detail.content = reader.GetString(2);
detail.type = reader.GetString(3);
detail.data = reader.GetString(5);
detail.toNickName = reader.GetString(6);
detail.nickName = reader.GetString(7);
detail.direct = reader.GetInt32(9);
data.Add(detail);
}
}
return data;
}
//建立表
public static void createTable()
{
SQLiteConnection conn = null;
string dbPath = "Data Source =" + Environment.CurrentDirectory + "/MsgRecord.db";
conn = new SQLiteConnection(dbPath);//建立資料庫例項,指定檔案位置
conn.Open();//開啟資料庫,若檔案不存在會自動建立
SQLiteCommand cmdInsert = new SQLiteCommand(conn);
string sql = "CREATE TABLE IF NOT EXISTS " + tableName + "(id integer NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,"
+ "uin varchar(255),content varchar(255)," +
"type varchar(255),remarkName varchar(255),data varchar(255),toNickName varchar(255),nickName varchar(255),userName varchar(255),direct integer)";
cmdInsert.CommandText = sql;
cmdInsert.ExecuteNonQuery();
conn.Close();
}
public static string createInsertSql(WxBean tempWx,string remarkName,string FromUserName,int direct,string Content,bool isFile)
{
SelfBean selfData = tempWx.getSelfConfig();
string friendNickName = tempWx.getFriendNickNameByUserName(FromUserName);
if (friendNickName == null)
friendNickName = "";
friendNickName = friendNickName.Replace("<span class=\"", "").Replace("\"></span>", "").Replace(" ", "");
RegexOptions options = RegexOptions.None;
Regex regex = new Regex(@"[ ]{2,}", options);
friendNickName = regex.Replace(friendNickName, @" ");
string friendRemarkName = tempWx.getFriendRemarkNameByUserName(FromUserName);
if (friendRemarkName == null)
friendRemarkName = "";
string nickName = tempWx.getSelfConfig().NikeName;
if (nickName == null)
nickName = "";
nickName = nickName.Replace("<span class=\"", "").Replace("\"></span>", "");
nickName = regex.Replace(nickName, @" ");
string sql = null;
if(!isFile)
sql = "insert into " + SQLiteHelper.tableName + "(uin,content,type,remarkName,data,toNickName,NickName,userName,direct) values('" + selfData.Uin + "','" + Content + "','1','" + remarkName + "','" + DateTime.Now.ToString() + "','" + nickName + "','" + friendNickName + "','" + FromUserName + "'," + direct + ")";
else
sql = "insert into " + SQLiteHelper.tableName + "(uin,content,type,remarkName,data,toNickName,NickName,userName,direct) values('" + selfData.Uin + "','" + Content + "','2','" + remarkName + "','" + DateTime.Now.ToString() + "','" + nickName + "','" + friendNickName + "','" + FromUserName + "'," + direct + ")";
return sql;
}
}
{
public static SQLiteConnection conn = null;
public static string tableName = "msg_record";
/**
* 獲取資料庫連結
*/
public static SQLiteConnection getSQLConnection()
{
SQLiteConnection conn = null;
string dbPath = "Data Source =" + Environment.CurrentDirectory + "/MsgRecord.db";
conn = new SQLiteConnection(dbPath);//建立資料庫例項,指定檔案位置
return conn;
}
/**
* 釋放連結
*/
public static void releaseSQLConnection()
{
if (conn != null)
{
conn.Close();
}
}
/**
* 獲取SQLcmd
*/
public static SQLiteCommand getSQLCommand()
{
if (conn == null)
{
conn = getSQLConnection();
}
string dbPath = "Data Source =" + Environment.CurrentDirectory + "/MsgRecord.db";
conn = new SQLiteConnection(dbPath);//建立資料庫例項,指定檔案位置
SQLiteCommand cmd = new SQLiteCommand(conn);
return cmd;
}
/// <summary>
/// 對SQLite資料庫執行增刪改操作,返回受影響的行數。
/// </summary>
/// <param name="sql">要執行的增刪改的SQL語句</param>
/// <param name="parameters">執行增刪改語句所需要的引數,引數必須以它們在SQL語句中的順序為準</param>
/// <returns></returns>
public static int ExecuteNonQuery(string sql, SQLiteParameter[] parameters)
{
int affectedRows = 0;
using (SQLiteConnection connection = new SQLiteConnection(getSQLConnection()))
{
connection.Open();
using (DbTransaction transaction = connection.BeginTransaction())
{
using (SQLiteCommand command = new SQLiteCommand(connection))
{
command.CommandText = sql;
if (parameters != null)
{
command.Parameters.AddRange(parameters);
}
affectedRows = command.ExecuteNonQuery();
}
transaction.Commit();
}
}
return affectedRows;
}
//根據uin和userName查詢結果
public static List<MsgDetail> findMsgDetails(string uin,string userName,string RemarkName)
{
string sql = "select * from " + tableName + " where uin ='" + uin + "' and ( userName = '" + userName + "'or remarkName = '"+RemarkName+"')";
SQLiteConnection connection = new SQLiteConnection(getSQLConnection());
connection.Open();
SQLiteCommand cmd = connection.CreateCommand();
cmd.CommandText = sql;
SQLiteDataReader reader = cmd.ExecuteReader();
List<MsgDetail> data = null;
if(reader.HasRows){
data = new List<MsgDetail>();
while(reader.Read()){
MsgDetail detail = new MsgDetail();
detail.content = reader.GetString(2);
detail.type = reader.GetString(3);
detail.data = reader.GetString(5);
detail.toNickName = reader.GetString(6);
detail.nickName = reader.GetString(7);
detail.direct = reader.GetInt32(9);
data.Add(detail);
}
}
return data;
}
//建立表
public static void createTable()
{
SQLiteConnection conn = null;
string dbPath = "Data Source =" + Environment.CurrentDirectory + "/MsgRecord.db";
conn = new SQLiteConnection(dbPath);//建立資料庫例項,指定檔案位置
conn.Open();//開啟資料庫,若檔案不存在會自動建立
SQLiteCommand cmdInsert = new SQLiteCommand(conn);
string sql = "CREATE TABLE IF NOT EXISTS " + tableName + "(id integer NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,"
+ "uin varchar(255),content varchar(255)," +
"type varchar(255),remarkName varchar(255),data varchar(255),toNickName varchar(255),nickName varchar(255),userName varchar(255),direct integer)";
cmdInsert.CommandText = sql;
cmdInsert.ExecuteNonQuery();
conn.Close();
}
public static string createInsertSql(WxBean tempWx,string remarkName,string FromUserName,int direct,string Content,bool isFile)
{
SelfBean selfData = tempWx.getSelfConfig();
string friendNickName = tempWx.getFriendNickNameByUserName(FromUserName);
if (friendNickName == null)
friendNickName = "";
friendNickName = friendNickName.Replace("<span class=\"", "").Replace("\"></span>", "").Replace(" ", "");
RegexOptions options = RegexOptions.None;
Regex regex = new Regex(@"[ ]{2,}", options);
friendNickName = regex.Replace(friendNickName, @" ");
string friendRemarkName = tempWx.getFriendRemarkNameByUserName(FromUserName);
if (friendRemarkName == null)
friendRemarkName = "";
string nickName = tempWx.getSelfConfig().NikeName;
if (nickName == null)
nickName = "";
nickName = nickName.Replace("<span class=\"", "").Replace("\"></span>", "");
nickName = regex.Replace(nickName, @" ");
string sql = null;
if(!isFile)
sql = "insert into " + SQLiteHelper.tableName + "(uin,content,type,remarkName,data,toNickName,NickName,userName,direct) values('" + selfData.Uin + "','" + Content + "','1','" + remarkName + "','" + DateTime.Now.ToString() + "','" + nickName + "','" + friendNickName + "','" + FromUserName + "'," + direct + ")";
else
sql = "insert into " + SQLiteHelper.tableName + "(uin,content,type,remarkName,data,toNickName,NickName,userName,direct) values('" + selfData.Uin + "','" + Content + "','2','" + remarkName + "','" + DateTime.Now.ToString() + "','" + nickName + "','" + friendNickName + "','" + FromUserName + "'," + direct + ")";
return sql;
}
}