https://blog.csdn.net/weixin_41732430/article/details/83753628?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162352061716780357228205%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162352061716780357228205&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allbaidu_landing_v2~default-2-83753628.first_rank_v2_pc_rank_v29&utm_term=C%23+%E6%93%8D%E4%BD%9Csqlite&spm=1018.2226.3001.4187
頭文件
using System.Data.SQLite;
using System.Data;
string connStr="Data Source=;Password=;Version=;";
//創建連接對象sqliteConn
SQLiteConnection sqliteConn = new SQLiteConnection(connStr);
//打開文件,若文件不存在,將會創建文件
sqliteConn.Open();
//創建命令執行對象sqliteCmd
SQLiteCommand sqliteCmd = new SQLiteCommand(strCmd, sqliteConn);
//執行指令
sqliteCmd.ExecuteNonQuery();
打開數據庫.db文件,連接數據庫
//----------------------------------------------------
//連接數據庫
//----------------------------------------------------
public Boolean SQLite_connect()
{
bool flag = false;
if (dataBaseName == "")
{
return false;
}
try
{
sqliteConn = new SQLiteConnection(connStr);
sqliteConn.Open();
flag = true;
}
catch (Exception ex)
{
ex.ToString();
flag = false;
}
return flag;
}
//---------------------------------------------------------------
//創建數據庫
//---------------------------------------------------------------
public Boolean SQLite_createDataBase()
{
bool flag = false;
if (dataBaseName == "")
{
return false;
}
try
{
if (System.IO.File.Exists(dataSource) == false)
{
sqliteConn = new SQLiteConnection(connStr);
sqliteConn.Open();
flag = true;
}
else
{
flag = false;
}
}
catch (Exception ex)
{
ex.ToString();
}
return flag;
}
刪除數據庫
直接刪除.db文件即可
public Boolean SQLite_deleteDataBase()
{
bool flag = false;
if (dataBaseName == "")
{
return false;
}
try
{
if (System.IO.File.Exists(dataSource))
{
System.IO.File.Delete(dataSource);
flag = true;
}
}
catch (Exception ex)
{
ex.ToString();
flag = false;
}
return flag;
}
建表
//------------------------------------------------
//新建表
//參數:建表指令,string strCmd = "CAMERA1 (BRAND TEXT, RESULT TINYINT, RIQI TIMESTAMP NOT NULL);";
//------------------------------------------------
public Boolean SQLite_createTable(string strCmd)
{
bool flag = false;
strCmd = "CREATE TABLE IF NOT EXISTS " + strCmd;
if (dataBaseName == "" || strCmd == "")
{
return false;
}
//沒有庫文件時不能建表
if (System.IO.File.Exists(dataSource) == false)
{
return false;
}
try
{
if (sqliteConn.State != ConnectionState.Open) //判斷連接狀態
{
sqliteConn.Open(); //若未連接,則連接
}
SQLiteCommand sqliteCmd = new SQLiteCommand(strCmd, sqliteConn);
sqliteCmd.ExecuteNonQuery();
flag = true;
}
catch (Exception ex)
{
ex.ToString();
flag = false;
}
return flag;
}
刪表
public Boolean SQLite_deleteTable(string tableName)
{
bool flag = false;
try
{
if (sqliteConn.State != ConnectionState.Open)
{
sqliteConn.Open();
}
SQLiteCommand cmd = new SQLiteCommand();
cmd.Connection = sqliteConn;
cmd.CommandText = "DROP TABLE IF EXISTS " + tableName;
cmd.ExecuteNonQuery();
flag = true;
}
catch (Exception ex)
{
ex.ToString();
flag = false;
}
return flag;
}
插入記錄
//---------------------------------
//插入記錄
//string cmd1 = "CAMERA1 (BRAND,RESULT,RIQI) VALUES (@brand,@result,STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW'));"; //時間戳精確到ms
//SQLiteParameter p1 = new SQLiteParameter("@ID", DbType.Int32);
//p1.value=20;
//使用事務時,transactionBegin="BEGIN TRANSACTION",不用時,transactionBegin=""
//---------------------------------
public Boolean SQLite_insert(string strCmd, SQLiteParameter[] param, string transactionBegin, string transactionEnd)
{
bool flag = false;
if (strCmd == "")
{
return false;
}
strCmd = transactionBegin + "INSERT INTO " + strCmd + transactionEnd;
try
{
if (sqliteConn.State != ConnectionState.Open)
{
sqliteConn.Open();
}
SQLiteCommand cmd = new SQLiteCommand();
cmd.Connection = sqliteConn;
cmd.CommandText = strCmd;
foreach (var ele in param)
{
cmd.Parameters.Add(ele); //
}
cmd.ExecuteNonQuery();
flag = true;
}
catch (Exception ex)
{
ex.ToString();
flag = false;
}
return flag;
}
刪除記錄
//---------------------------------
//刪除記錄
//strCmd=`table_name` WHERE `col`=val
//---------------------------------
public Boolean SQLite_delete(string strCmd)
{
bool flag = false;
if (strCmd == "")
{
return false;
}
strCmd = "DELETE FROM " + strCmd;
try
{
if (sqliteConn.State != ConnectionState.Open)
{
sqliteConn.Open();
}
SQLiteCommand cmd = new SQLiteCommand();
cmd.Connection = sqliteConn;
cmd.CommandText = strCmd;
cmd.ExecuteNonQuery();
flag = true;
}
catch (Exception ex)
{
ex.ToString();
flag = false;
}
return flag;
}
查詢記錄
//--------------------------------- //查詢記錄 //string cmd = "CAMERA1 WHERE (`RIQI` BETWEEN '2021-06-03 02:10:52' AND '2021-06-03 02:10:57') AND `RESULT` = 1;"; //--------------------------------- public DataTable SQLite_search(string strCmd) { if (strCmd == "") { return null; } DataTable dt = new DataTable(); strCmd = "SELECT * FROM " + strCmd; try { if (sqliteConn.State != ConnectionState.Open) { sqliteConn.Open(); } SQLiteDataAdapter adapter = new SQLiteDataAdapter(strCmd, sqliteConn); SQLiteCommandBuilder builder = new SQLiteCommandBuilder(adapter); adapter.Fill(dt); } catch (Exception ex) { ex.ToString(); return null; } return dt; }
計數
//---------------------------------------------------------- //查詢計數 //strCmd=table_name WHERE //---------------------------------------------------------- public Int32 SQLite_count(string strCmd) { Int32 count = 0; if (strCmd == "") { return -1; } try { if (sqliteConn.State != ConnectionState.Open) { sqliteConn.Open(); } strCmd = "SELECT COUNT(*) FROM " + strCmd; SQLiteCommand cmd = new SQLiteCommand(); cmd.Connection = sqliteConn; cmd.CommandText = strCmd; SQLiteDataReader reader = cmd.ExecuteReader(); reader.Read(); count = reader.GetInt32(0); } catch (Exception ex) { ex.ToString(); } return count; }
建索引
//---------------------------------------------------------- //創建索引 //string cmd = "DATATIME_index ON CAMERA1(RIQI);"; //---------------------------------------------------------- public Boolean SQLite_index(string strCmd) { bool flag = false; if (strCmd == "") { return false; } strCmd = "CREATE INDEX " + strCmd; try { if (sqliteConn.State != ConnectionState.Open) { sqliteConn.Open(); } SQLiteCommand cmd = new SQLiteCommand(); cmd.Connection = sqliteConn; cmd.CommandText = strCmd; cmd.ExecuteNonQuery(); } catch (Exception ex) { ex.ToString(); flag = false; } return flag; } }}