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相关推荐

  1. Python中使用数据库SQLite和MySQL

    一.数据库SQLite 1 建立数据库与建立表 直接来看例子: import sqlite3conn = sqlite3.connect("test.db"); c = conn. ...

  2. 嵌入式数据库SQLite的编译、安装和使用[ZT]

    嵌入式数据库SQLite的编译.安装和使用 下文介绍的内容都是基于 RedHat Linux 9.0 平台的. 引言:sqlite简介 sqlite是嵌入式SQL数据库引擎SQLite(SQLite ...

  3. sqlitestudio和mysql_SQLiteStudio优雅调试Android手机数据库Sqlite(推荐)

    前言 调试Android中的数据库有多种方式,目前比较流行的是:借助电脑端浏览器来调试,可以使用如下两个玩意: 博主在调试sqlite的时候,发现了个更加简单和强大的工具来调试sqlite数据库. S ...

  4. Android 学习心得(2)——Android内置数据库SQLite

    一.简介: Android有一个内置数据库SQLite,它是一种轻型数据库,它有五种数据类型:NULL(空型).BLOB(二进制).INTEGER(整型).REAL(浮点型).TEXT(字符串文本), ...

  5. 【嵌入式实验】《嵌入式数据库 sqlite 移植及使用》

    嵌入式数据库 sqlite 移植及使用 一.实验目的 二.实验内容 三.预备知识 四.实验设备及工具(包括软件调试工具) 五.实验步骤 实验一:移植嵌入式数据库 sqlite 1~5:安装 sqlit ...

  6. 嵌入式数据库Sqlite移植教程-转

    嵌入式数据库Sqlite移植教程 sqlite-3.3.6编译安装与交叉编译全过程详细记录 本文介绍的内容都是基于 Linux RedHat 9.0 平台的. 一.PC机编译安装 请阅读在安装包里的 ...

  7. 《一》Android 数据库 SQlite SQLiteOpenHelper

    /* 大家都知道写博客会很累的,大热天的. 希望=转载请注明出处:http://blog.csdn.net/ta893115871 请不要可怜你的鼠标,(*^__^*) 嘻嘻-- */ 众所周知,数据 ...

  8. Android 数据库Sqlite的使用(1)

    在Android中,我们使用的数据库是一个轻量级的数据库 sqlite 下面我们来学习一下它的CURD操作 首先 我们需要创建一个类 继承自android自带的一个数据库帮助类SQLiteOpenHe ...

  9. android 内嵌 数据库,安卓开发之嵌入式数据库sqlite的操作方法

    安卓App开发经常会需要嵌入式数据库sqlite的辅助,它可以存放我们必要的应用数据,下面介绍下如何使用java连接读取sqlite中的数据. 本文中的代码经本人测试可用,可以参考. 代码如下: DB ...

  10. Python网络爬虫和信息提取:(动态网站)双色球数据爬取及写入数据库Sqlite、json和Excel表

    我想着拿什么练习下网络爬虫信息提取时,就想到了双色球,心想把往期数据提取出来也是个不错的主意,把数据保存下来以后做数据分析,根据分析结果去买双色球岂不是美哉?!哈哈哈.. 当然这里仅是爬取和保存,数据 ...

最新文章

  1. php BC高精确度函数库
  2. linux odbc 数据源测试,linux操作系统配置ODBC数据源
  3. tomcat mysql数据源_Tomcat mysql 配置数据源
  4. superslide 学习笔记
  5. 题目1002:Grading
  6. 中子穿墙问题的MonteCarlo求解方法
  7. Mac 连过的 WiFi 怎么查密码?看这→
  8. Windows10远程连接服务器时出现“这可能是由于CredSSP加密数据库修正”的错误提示的解决办法
  9. python 读写西门子PLC 包含S7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC...
  10. Rational Rose安装教程
  11. 从 0 搭建 Vite 3 + Vue 3 前端工程化项目
  12. vscode中backspace按键失效
  13. css3的含义是什么
  14. 爱普生Epson Stylus Photo P50 打印机驱动
  15. OKRs,自由之风劲吹,发挥无限创造力 | Chatopera
  16. Logaster让设计logo更简单
  17. ENDNOTE使用方法(转发)
  18. 【人工智能】实验一:基于MLP的手写体字符识别
  19. php mysql 课件_php课件
  20. 论文阅读笔记《Decoupled Visual Servoing With Fuzzy Q-Learning》

热门文章

  1. 升级xcode5.1 iOS 6.0后以前的横屏项目 变为了竖屏
  2. GAN生成对抗网络基本概念及基于mnist数据集的代码实现
  3. 32位JDK和64位JDK
  4. redis介绍以及安装
  5. 【一针见血】 JavaScript this
  6. 一颗站在技术边缘的土豆
  7. mysql binlog日志查看及解码
  8. 查看操作系统的UUID
  9. zookeeper windows 下安装
  10. 深入了解tcmalloc(一):windows环境下无缝拦截技术初探