日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 使用数据库SQLite

發布時間:2023/12/9 C# 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 使用数据库SQLite 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.數據庫下載地址 http://sqlite.phxsoftware.com/

2.下載完成添加引用System.Data.SQLite.dll

3.SQLite操作通用類

?

代碼 using?System;
using?System.Collections.Generic;
using?System.Text;
using?System.Data.SQLite;
using?System.Data;
using?System.Data.Common;

namespace?PNet
{
????
class?SQLiteDBHelper
????{
????????
private?string?connectionString?=?string.Empty;
????????
///?<summary>???
????????
///?構造函數???
????????
///?</summary>???
????????
///?<param?name="dbPath">SQLite數據庫文件路徑</param>
????????public?SQLiteDBHelper(string?dbPath)
????????{
????????????
this.connectionString?=?"Data?Source="?+?dbPath;
????????}
????????
///?<summary>???
????????
///?判斷SQLite數據庫表是否存在??
????????
///?</summary>???
????????
///?<param?name="dbPath">要創建的SQLite數據庫文件路徑</param>???
????????public??bool?IsTableExist(string?tableName)
????????{

????????????
using?(SQLiteConnection?connection?=?new?SQLiteConnection(connectionString))
????????????{
????????????????connection.Open();
????????????????
using?(SQLiteCommand?command?=?new?SQLiteCommand(connection))
????????????????{

????????????????????command.CommandText?
=?"SELECT?COUNT(*)?FROM?sqlite_master?where?type='table'?and?name='"+tableName+"'";
????????????????????
int?iaaa=?Convert.ToInt32(command.ExecuteScalar());
????????????????????
if?(Convert.ToInt32(command.ExecuteScalar())?==?0)
????????????????????{
????????????????????????
return?false;
????????????????????}
????????????????????
else
????????????????????{
????????????????????????
return?true;
????????????????????}?

????????????????}
????????????}

????????
????????}
????????
///?<summary>???
????????
///?創建SQLite數據庫文件???
????????
///?</summary>???
????????
///?<param?name="dbPath">要創建的SQLite數據庫文件路徑</param>???
????????public?static?void?CreateDB(string?dbPath,?string?sql)
????????{
????????????
using?(SQLiteConnection?connection?=?new?SQLiteConnection("Data?Source="?+?dbPath))
????????????{
????????????????connection.Open();
????????????????
using?(SQLiteCommand?command?=?new?SQLiteCommand(connection))
????????????????{
????????????????????
//?command.CommandText?=?"CREATE?TABLE?Demo(id?integer?NOT?NULL?PRIMARY?KEY?AUTOINCREMENT?UNIQUE)";??
????????????????????command.CommandText?=?sql;
????????????????????command.ExecuteNonQuery();

????????????????????
//command.CommandText?=?"DROP?TABLE?Demo";???
????????????????????
//command.ExecuteNonQuery();???
????????????????}
????????????}
????????}
????????
///?<summary>???
????????
///?對SQLite數據庫執行增刪改操作,返回受影響的行數。???
????????
///?</summary>???
????????
///?<param?name="sql">要執行的增刪改的SQL語句</param>???
????????
///?<param?name="parameters">執行增刪改語句所需要的參數,參數必須以它們在SQL語句中的順序為準</param>???
????????
///?<returns></returns>???
????????public?int?ExecuteNonQuery(string?sql,?SQLiteParameter[]?parameters)
????????{
????????????
int?affectedRows?=?0;
????????????
using?(SQLiteConnection?connection?=?new?SQLiteConnection(connectionString))
????????????{
????????????????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;
????????}
????????
///?<summary>???
????????
///?執行一個查詢語句,返回一個關聯的SQLiteDataReader實例???
????????
///?</summary>???
????????
///?<param?name="sql">要執行的查詢語句</param>???
????????
///?<param?name="parameters">執行SQL查詢語句所需要的參數,參數必須以它們在SQL語句中的順序為準</param>???
????????
///?<returns></returns>???
????????public?SQLiteDataReader?ExecuteReader(string?sql,?SQLiteParameter[]?parameters)
????????{
????????????SQLiteConnection?connection?
=?new?SQLiteConnection(connectionString);
????????????SQLiteCommand?command?
=?new?SQLiteCommand(sql,?connection);
????????????
if?(parameters?!=?null)
????????????{
????????????????command.Parameters.AddRange(parameters);
????????????}
????????????connection.Open();
????????????
return?command.ExecuteReader(CommandBehavior.CloseConnection);
????????}
????????
///?<summary>???
????????
///?執行一個查詢語句,返回一個包含查詢結果的DataTable???
????????
///?</summary>???
????????
///?<param?name="sql">要執行的查詢語句</param>???
????????
///?<param?name="parameters">執行SQL查詢語句所需要的參數,參數必須以它們在SQL語句中的順序為準</param>???
????????
///?<returns></returns>???
????????public?DataTable?ExecuteDataTable(string?sql,?SQLiteParameter[]?parameters)
????????{
????????????
using?(SQLiteConnection?connection?=?new?SQLiteConnection(connectionString))
????????????{
????????????????
using?(SQLiteCommand?command?=?new?SQLiteCommand(sql,?connection))
????????????????{
????????????????????
if?(parameters?!=?null)
????????????????????{
????????????????????????command.Parameters.AddRange(parameters);
????????????????????}
????????????????????SQLiteDataAdapter?adapter?
=?new?SQLiteDataAdapter(command);
????????????????????DataTable?data?
=?new?DataTable();
????????????????????adapter.Fill(data);
????????????????????
return?data;
????????????????}
????????????}

????????}
????????
///?<summary>???
????????
///?執行一個查詢語句,返回查詢結果的第一行第一列???
????????
///?</summary>???
????????
///?<param?name="sql">要執行的查詢語句</param>???
????????
///?<param?name="parameters">執行SQL查詢語句所需要的參數,參數必須以它們在SQL語句中的順序為準</param>???
????????
///?<returns></returns>???
????????public?Object?ExecuteScalar(string?sql,?SQLiteParameter[]?parameters)
????????{
????????????
using?(SQLiteConnection?connection?=?new?SQLiteConnection(connectionString))
????????????{
????????????????
using?(SQLiteCommand?command?=?new?SQLiteCommand(sql,?connection))
????????????????{
????????????????????
if?(parameters?!=?null)
????????????????????{
????????????????????????command.Parameters.AddRange(parameters);
????????????????????}
????????????????????SQLiteDataAdapter?adapter?
=?new?SQLiteDataAdapter(command);
????????????????????DataTable?data?
=?new?DataTable();
????????????????????adapter.Fill(data);
????????????????????
return?data;
????????????????}
????????????}
????????}
????????
///?<summary>???
????????
///?查詢數據庫中的所有數據類型信息???
????????
///?</summary>???
????????
///?<returns></returns>???
????????public?DataTable?GetSchema()
????????{
????????????
using?(SQLiteConnection?connection?=?new?SQLiteConnection(connectionString))
????????????{
????????????????connection.Open();
????????????????DataTable?data?
=?connection.GetSchema("TABLES");
????????????????connection.Close();
????????????????
//foreach?(DataColumn?column?in?data.Columns)???
????????????????
//{???
????????????????
//????Console.WriteLine(column.ColumnName);???
????????????????
//}???
????????????????return?data;
????????????}
????????}
????????
///?<summary>
????????
///?執行查詢語句,返回DataSet
????????
///?</summary>
????????
///?<param?name="SQLString">查詢語句</param>
????????
///?<returns>DataSet</returns>
????????public?DataSet?Query(string?SQLString)
????????{
????????????
using?(SQLiteConnection?connection?=?new?SQLiteConnection(connectionString))
????????????{
????????????????DataSet?ds?
=?new?DataSet();
????????????????
try
????????????????{
????????????????????connection.Open();
????????????????????SQLiteDataAdapter?command?
=?new?SQLiteDataAdapter(SQLString,?connection);
????????????????????command.Fill(ds,?
"ds");
????????????????}
????????????????
catch?(System.Data.SQLite.SQLiteException?ex)
????????????????{
????????????????????
throw?new?Exception(ex.Message);
????????????????}
????????????????
return?ds;
????????????}
????????}



????}
}

?

?

?

?

?4.使用舉例

代碼 using?System;
using?System.Collections.Generic;
using?System.ComponentModel;
using?System.Data;
using?System.Drawing;
using?System.Linq;
using?System.Text;
using?System.Windows.Forms;
using?System.Data.SQLite;
namespace?CleanFileServer
{
????
public?partial?class?FrmUser?:?Form
????{
????????
public?FrmUser()
????????{
????????????InitializeComponent();
????????}
????????
private?string?dbPath?=?Environment.CurrentDirectory?+?"\\"?+?"USERDB.db3";
????????
private?void?btnAdd_Click(object?sender,?EventArgs?e)
????????{
????????????lblMsg.Text?
=?"";
????????????
string?userName?=?txtUserName.Text.Trim();
????????????
string?pwd?=?txtPwd.Text.Trim();
????????????
if?(userName?==?"")
????????????{
????????????????lblMsg.Text?
=?"用戶名不能為空!";
????????????????
return;
????????????}
????????????
if?(pwd?==?"")
????????????{
????????????????lblMsg.Text?
=?"密碼不能為空!";
????????????????
return;
????????????}?????????
????????????CreateTable();
????????????InsertData(userName,?pwd);
????????????ShowData();
????????????txtUserName.Text?
=?"";
????????????txtPwd.Text?
=?"";
????????}
????????
private??void?CreateTable()???
????????{??????????
????????????
//如果不存在改數據庫文件,則創建該數據庫文件???
????????????
??????????? SQLiteDBHelper db = new SQLiteDBHelper(dbPath);
??????????? if (!db.IsTableExist("USER"))
??????????? {
??????????????? string sql = "CREATE TABLE USER(id integer NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,UserName varchar(30),Password varchar(50),Level varchar(2),AddDate datetime)";
??????????????? db.ExecuteNonQuery(sql, null);
??????????? }
???????????
????????}
????????
private??void?InsertData(string?userName,?string?pwd)
????????{
????????????
string?sql?=?"INSERT?INTO?USER(UserName,Password,AddDate)values(@UserName,@Password,@AddDate)";
????????????SQLiteDBHelper?db?
=?new?SQLiteDBHelper(dbPath);
????????????SQLiteParameter[]?parameters?
=?new?SQLiteParameter[]{???
????????????????????????
new?SQLiteParameter("@UserName",userName),???
????????????????????
new?SQLiteParameter("@Password",pwd),???
????????????????????
new?SQLiteParameter("@AddDate",DateTime.Now)?????????????????
????????????????????};
????????????db.ExecuteNonQuery(sql,?parameters);???
???????????

????????}
????????
private??void?ShowData()
????????{
????????????
string?sql?=?"select?UserName,Password,AddDate?from?User?order?by?id?desc";
????????????SQLiteDBHelper?db?
=?new?SQLiteDBHelper(dbPath);
????????????DataSet?ds
=db.Query(sql);
????????????gdvUser.DataSource?
=?ds.Tables["ds"];
?????????
????????}
????????
private??void?ReadData()???
????????{
??????????
????????????
string?id;
????????????
string?userName;
????????????
string?pwd;
????????????
string?addDate;
???????????
//查詢從50條起的20條記錄???
???????????
//string?sql?=?"select?*?from?User?order?by?id?desc?limit?50?offset?20";???
????????????string?sql?=?"select?id,UserName,Password,AddDate?from?User?order?by?id?desc";
????????????SQLiteDBHelper?db?
=?new?SQLiteDBHelper(dbPath);???
???????????
using?(SQLiteDataReader?dr?=?db.ExecuteReader(sql,?null))???
???????????{
???????????????
while?(dr.Read())
???????????????{
???????????????????id?
=?dr["id"].ToString();
???????????????????userName?
=?dr["UserName"].ToString();
???????????????????pwd?
=?dr["Password"].ToString();
???????????????????addDate?
=?dr["AddDate"].ToString();
???????????????}
?????????????
???????????}???
????????}

????????
private?void?FrmUser_Load(object?sender,?EventArgs?e)
????????{
????????????lblMsg.Text?
=?"";
????????????ShowData();
????????}

????????
private?void?btnDelete_Click(object?sender,?EventArgs?e)
????????{
????????????lblMsg.Text?
=?"";
????????????
string?userName?=?txtUserName.Text.Trim();
????????????
string?pwd?=?txtPwd.Text.Trim();
????????????
if?(userName?==?"")
????????????{
????????????????
return;
????????????}
????????????
try
????????????{
??????????
????????????????DialogResult?dlR?
=?MessageBox.Show(this,?"確定要刪除嗎?",?"請確認",?MessageBoxButtons.YesNo,
????????????????????MessageBoxIcon.Question,?MessageBoxDefaultButton.Button1,?MessageBoxOptions.RightAlign);
????????????????
if?(dlR?==?DialogResult.Yes)
????????????????{
????????????????????
string?sql?=?"delete?from?User?where?UserName=@UserName?";
????????????????????SQLiteDBHelper?sqlHelper?
=?new?SQLiteDBHelper(dbPath);
????????????????????SQLiteParameter[]?parameters?
=?new?SQLiteParameter[]{???
????????????????????????
new?SQLiteParameter("@UserName",userName)???
?????????????????????????????????
????????????????????};
????????????????????sqlHelper.ExecuteNonQuery(sql,?parameters);
????????????????????lblMsg.Text?
=?"成功刪除!";
????????????????????ShowData();
????????????????}
????????????}
????????????
catch?(Exception?ex)
????????????{
????????????????lblMsg.Text?
=?ex.Message;
????????????}

????????}

?

5.出現錯誤

混合模式程序集是針對“v2.0.50727”版的運行時生成的,在沒有配置其他信息的情況下,無法在 4.0 運行時中加載該程序集。

在App.config添加

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
? <startup useLegacyV2RuntimeActivationPolicy="true">
??? <supportedRuntime version="v4.0"/>
? </startup>
</configuration>

?

?

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SQLite; using System.Data; using System.Windows.Forms;namespace Dispatcha_PadWin10 {public class DBHelper{private string connectionString = "Data Source=" + Environment.CurrentDirectory + "\\" + "db.db";public void ExecuteNonQuery(string sql){using (SQLiteConnection conn = new SQLiteConnection(connectionString)){conn.Open();using (SQLiteCommand command = new SQLiteCommand(conn)){ command.CommandText = sql;command.ExecuteNonQuery(); }}}public bool IsWorkStationExist(string work_station){bool isExist = false;string sql = "select work_station from station where work_station='" + work_station + "'";using (SQLiteConnection conn = new SQLiteConnection(connectionString)){conn.Open();using (SQLiteCommand cmd = new SQLiteCommand()){cmd.Connection = conn;cmd.CommandText = sql;using (SQLiteDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection)){isExist= dr.Read(); }}}return isExist;} public void LoadStationToDgv(DataGridView dgv){string sql = "select work_station,work_x,work_y,store_station,store_x,store_y,can_charger from station";using (SQLiteConnection conn = new SQLiteConnection(connectionString)){conn.Open();using (SQLiteCommand cmd = new SQLiteCommand(sql,conn)){using (SQLiteDataReader dr = cmd.ExecuteReader()){while( dr.Read()){int index = dgv.Rows.Add();dgv.Rows[index].Cells[0].Value = dr["work_station"].ToString();dgv.Rows[index].Cells[1].Value = dr["work_x"].ToString();dgv.Rows[index].Cells[2].Value = dr["work_y"].ToString();dgv.Rows[index].Cells[3].Value = dr["store_station"].ToString();dgv.Rows[index].Cells[4].Value = dr["store_x"].ToString();dgv.Rows[index].Cells[5].Value = dr["store_y"].ToString();dgv.Rows[index].Cells[6].Value = dr["can_charger"].ToString();}}}}}public List<string> getWorkStations(){List<string> lst = new List<string>();string sql = "select work_station from station";using (SQLiteConnection conn = new SQLiteConnection(connectionString)){conn.Open();using (SQLiteCommand cmd = new SQLiteCommand(sql, conn)){using (SQLiteDataReader dr = cmd.ExecuteReader()){while (dr.Read()){lst.Add(dr["work_station"].ToString().Trim()); }}}}return lst;}public StationInfo getWorkStationInfo(string workStation){StationInfo stationInfo = new StationInfo();string sql = "select work_station,work_x,work_y,store_station,store_x,store_y,can_charger from station "+ "where work_station='"+ workStation+"'";using (SQLiteConnection conn = new SQLiteConnection(connectionString)){conn.Open();using (SQLiteCommand cmd = new SQLiteCommand(sql, conn)){using (SQLiteDataReader dr = cmd.ExecuteReader()){while (dr.Read()){stationInfo.Work_station = dr["work_station"].ToString();stationInfo.Work_x =double.Parse( dr["work_x"].ToString());stationInfo.Work_y = double.Parse(dr["work_y"].ToString());stationInfo.Store_station = dr["store_station"].ToString();stationInfo.Store_x = double.Parse(dr["store_x"].ToString());stationInfo.Store_y = double.Parse(dr["store_y"].ToString());stationInfo.Can_charge = int.Parse(dr["can_charger"].ToString());}}}}return stationInfo;}} }

?

?

轉載于:https://www.cnblogs.com/ike_li/archive/2010/11/01/1866288.html

總結

以上是生活随笔為你收集整理的C# 使用数据库SQLite的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。