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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410848.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux系统安装arcsde,Linux操作系统安装ArcSDE10

测试sde用户是否可以连通[Oraclelocalhost ~]$ sqlplus sde/sdeorclSQL*Plus: Release 11.2.0.1.0 Production on Wed Feb 22 11:46:18 2012Copyright (c) 1982, 2009, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 …

28 | 读写分离有哪些坑?

在上一篇文章中&#xff0c;我和你介绍了一主多从的结构以及切换流程。今天我们就继续聊聊一主多从架构的应用场景&#xff1a;读写分离&#xff0c;以及怎么处理主备延迟导致的读写分离问题。 我们在上一篇文章中提到的一主多从的结构&#xff0c;其实就是读写分离的基本结构了…

NOIP2003提高组

第一题 神经网络 【题目描述】 人工神经网络&#xff08;Artificial Neural Network&#xff09;是一种新兴的具有自我学习能力的计算系统&#xff0c;在模式识别、函数逼近及贷款风险评估等诸多领域有广泛的应用。对神经网络的研究一直是当今的热门方向&#xff0c;兰兰同学在…

巧妙解决element-ui下拉框选项过多的问题

1. 场景描述 不知道你有没有这样的经历&#xff0c;下拉框的选项很多&#xff0c;上万个选项甚至更多&#xff0c;这个时候如果全部把数据放到下拉框中渲染出来&#xff0c;浏览器会卡死&#xff0c;体验会特别不好 用人会说element-ui的select有一个remote-method&#xff0c;…

【2019年07月08日】A股最便宜的股票

查看更多A股最便宜的股票&#xff1a;androidinvest.com/CNValueTop/ 便宜指数 PE PB 股息 ROE&#xff0c;四因子等权&#xff0c;数值越大代表越低估。 本策略只是根据最新的数据来选股&#xff0c;完全无人工参与的过程&#xff0c;所以并不能对接下来的利润或业绩做预测…

Sharepoint 2010新体验之一-----基于Claims的全新验证机制

在SharePoint Server 2007中世界中&#xff0c;如果我们想在一个Web应用程序中并存多种验证机制&#xff0c;只能通过“扩展Web应用程序”来实现&#xff0c;这种方式实现上是通过不同的应用程序来交互同一内容数据库。但是在SharePoint 2010中&#xff0c;我们看到了新的身份验…

手写springmvc

手写springmvc 既然已经手写了spring的IOC&#xff0c;那springmvc肯定也要尝试写写了。手写spring博客:https://www.cnblogs.com/xiaojiesir/p/11139203.html SpringMVC的运行流程&#xff1a; &#xff08;1&#xff09;首先浏览器发送请求——>DispatcherServlet&#xf…

linux可用机场客户端,Linux系统可用的6款Bittorrent客户端

大家都知道迅雷目前尚不支持Linux系统&#xff0c;其实使用Bittorrent客户端进行下载未尝不是一个好的选择&#xff0c;这里给大家介绍6款Linux可用Bittorrent客户端&#xff0c;方便经常需要进行文件下载的Linux用户。1.KtorrentKtorrent是KDE桌面环境默认安装的Bittorrent工具…

H3C 环路避免机制一:路由毒化

转载于:https://www.cnblogs.com/fanweisheng/p/11156838.html

.net自定义控件Control、WebControl、CompositeControl

.net自定义控件Control、WebControl、CompositeControl 一、呈现方法 1、Control主要有以下4个方法用于呈现 1 //该方法为入口方法2 public virtual void RenderControl (HtmlTextWriter writer) 3 { 4 this.RenderControl(writer,this.xxxAdapter); 5 } 6 7 p…

About Me

&#xff08;参考Matirx67大牛的格式&#xff09; 网名&#xff1a;Sephiroth Lee 年龄&#xff1a;不会算 生日&#xff1a;1994-1-20 性别&#xff1a;男 血型&#xff1a;不知道 星座&#xff1a;摩羯座 家乡&#xff1a;河北 学校&#xff1a;衡水中学 地址&#xff1a;衡水…

Java中连接池

最近在看书&#xff0c;其中有一段是&#xff1a; 相信有大佬已经能看得出来这是《企业IT架构转型之道》这本书了&#xff08;这是一本不错的书&#xff0c;推荐工作时长>2年的软件人员可以看看&#xff09;~~ 对于红色框内的那段文字&#xff0c;我有两个概念不是很明白&am…

C语言中 用选择结构编译算法,C语言程序设计立体化教程(高等教育立体化精品系列规划教材)...

导语内容提要李刚、唐炜主编的《C语言程序设计立体化教程(高等教育立体化精品系列规划教材)》主要分为四篇&#xff1a;语法基础篇、程序设计结构篇、初级应用篇和高级应用篇&#xff1b;其中第一篇语法基础部分介绍了C语言概述和C语言数据与运算&#xff1b;第二篇程序设计结构…

第二次实验报告(漏)

C程序设计实验报告 实验项目&#xff1a; 1.if语句的应用2.switch/case语句的应用3.switch/case语句嵌套if语句的应用4.switch/case结构的嵌套应用5.分析程序 姓名&#xff1a;王治林   实验地点&#xff1a;514教室   实验时间&#xff1a;2019.4.3 一、实验目的与要求 …

自我总结篇之vue的组件通信(父传子 子传父 非父子)

一&#xff1a;父传子 父组件代码如下&#xff1a; <template><div class"father"><child :messagemessage :message2message2></child> </div> </template> <script> import child from /components/child.vue export de…

浅谈“微服务”

微服务概述 1.1 易于扩展 1.2 部署简单 1.3 技术异构性 数据库的服务化切分 2.1 什么是“分库分表”&#xff1f; 2.2 数据库扩展的几种方式 2.3 分库分表的几种方式 2.4 引入分库分表中间件后面临的问题 2.5 现有分库分表中间件的横向对比 微服务架构中的分布式事务 3.1 什么…

liigo:爱可视70平板电脑使用感受,遗憾与满足并存

我想大部分人来这里&#xff0c;不是想听美言的。许多资料、宣传性文章、评测、视频等等&#xff0c;网络上已经有很多了&#xff08;其中外文占很大比例&#xff09;。 我想大部分人来这里&#xff0c;是想听真正的使用感受的。我想&#xff0c;我这里提到的许多内容&#xff…

visual studio 正则表达式 查找与替换文本

好多时候想要重构一些代码&#xff0c;但是修改起来发现很麻烦&#xff0c;因为简单的文本替换不能满足需求&#xff0c;这时候就要借助ide的力量了。还好visual studio 2010支持正则表达式查找和替换。如下图所示&#xff1a; document.all.domElementA.style.visibility hid…

51 Python - 装饰器 参数化装饰器——装饰器更通用

05参数化装饰器——装饰器更通用 参数化装饰器如何理解&#xff0c;简单理解就是让装饰器可以通用。场景举例&#xff0c;现在有个需求要改某一段文字&#xff0c;既要加<P>标签&#xff0c;又要加<B>&#xff0c;还有加<Div>。是不是意味着需要定义多个装饰…

python中numpy矩阵运算操作大全(非常全)!

python中numpy矩阵运算操作大全&#xff08;非常全&#xff09; //2019.07.10晚python矩阵运算大全1、矩阵的输出形式&#xff1a;对于任何一个矩阵&#xff0c;python输出的模板是&#xff1a;import numpy as np #引入numpy模块np1np.array([[1,2,3],[1,3,4],[1,6,2]...]) #数…