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;…

linux 驱动入门 魏清,Linux下的SPI总线驱动(三)

版权所有&#xff0c;转载请说明转自原创作者&#xff1a;南京邮电大学 通信与信息系统专业 研二 魏清五&#xff0e;SPI测试代码对于SPI总线驱动&#xff0c;我们可以分为SPI控制设备驱动和SPI接口设备驱动。而作为驱动开发人员主要是像SPI移植的时候一样会添加SPI控制设备和…

[html] 如何在IOS下启用WebApp全屏模式?

[html] 如何在IOS下启用WebApp全屏模式&#xff1f; 手机端打开Web检查器&#xff0c;Mac端接入手机&#xff0c;打开Safari开发模式。 设置<meta>标签&#xff1a; <meta name"apple-mobile-web-app-capable" content"yes" /> <meta name…

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

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

[html] 举例说明使用data-有什么优点?

[html] 举例说明使用data-有什么优点&#xff1f; 可以方便的缓存数据在dom上个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

linux 粘贴网站地址,linux 复制粘贴

ListView 完全优化 &plus; 多种listitem布局处理# 百度了下,感觉下面的博客文章还都挺全面的,写的很好,直接分享得了 Android性能优化--Listview优化 - tonycheng93 - 博客园http://www.cnblogs.co ...自动切换的JS菜单ADO&period;NET 快速入门(十四)&#xff1a;使用…

NOIP2002题目汇总

普及组 阶级求和&#xff08;模拟&#xff09;选数&#xff08;数学&#xff09;产生数&#xff08;高精度&#xff09;马拦过河卒&#xff08;递推&#xff09;提高组 均分纸牌&#xff08;模拟&#xff09;字串变换&#xff08;搜索&#xff09;自由落体&#xff08;模拟&…

Xpath语法学习记录

高级参考&#xff1a;https://blog.csdn.net/wudaoshihun/article/details/82226122 举例: 1 <!DOCTYPE html>2 <html>3 <head>4 <meta charset"utf-8">5 <title></title>6 </head>7 <bod…

[html] 可替换元素和不可替换元素有什么不同的特点?

[html] 可替换元素和不可替换元素有什么不同的特点&#xff1f; 可替换元素的内容由元素的某些属性的值决定不可替换元素的内容由子节点的内容决定个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目…

Linux循环登录怎么解决,文本模式循环登录! 求解决

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼的确只有/etc/bash.bashrc。。/etc/bash.bashrc:[ -z "$PS1" ] && returnshopt -s checkwinsizeif [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; thendebian_chroot$(cat /etc/deb…

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

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

[html] 写一个三栏布局,两边固定,中间自适应

[html] 写一个三栏布局&#xff0c;两边固定&#xff0c;中间自适应 position marginfloat marginflex个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

手写springmvc

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

[html] 页面需要支持多语言,如果是你该怎么做?

[html] 页面需要支持多语言&#xff0c;如果是你该怎么做&#xff1f; 有多语言选项利用i18n来适配多语言个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

工厂方法

工厂方法特点&#xff1a;将对象的创建放在工厂类中&#xff0c;利用抽象原理&#xff0c;将实例化行为延迟到工厂类中 using System;using System.Collections.Generic;using System.Text; namespace OOAD_FactoryMethod{ class Program { static void Main(stri…

centos7安装svn客户端和使用

rpm -qa subversion yum remove -y subversion yum install -y subversion svnserve --version svn checkout http://xxx.xx.xx/xx转载于:https://www.cnblogs.com/lihan829/p/11154631.html

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

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