PS:

类写的并不算很好,网上找了找都是零碎,没有现成的库,也许是没找到吧。

自己瞎写了一个,拿走记得点赞。

功能索引、增删改查:

  • 是否存在数据库
  • 是否存在字段
  • 是否表存在
  • 创建数据库
  • 创建表
  • 删除表
  • 删除行
  • 删除数据库
  • 删除列
  • 获取表中多少列
  • 获取数据中表数量
  • 获取表中字段有哪些
  • 获取所有表名
  • 获取表中一列
  • 获取表中行
  • 获取表所有内容
  • 更新表中某行某值,如名单表中,姓名为小明,修改其性别为女
  • 更新列数据,强制为同一个
  • 插入一列
  • 插入一行
  • 重命名表名
  • 重命名字段
  • 重命名数据库

代码:

namespace ConsoleApp
{using System;using System.Collections.Generic;using System.Data;using System.Data.SQLite;using System.IO;public class SQLite : IDisposable{private SQLiteConnection _connection;private SQLiteDataReader _reader;private SQLiteCommand _command;private string queryString;public SQLite(string path){if (File.Exists(path)){_connection = new SQLiteConnection("data source = " + path);_connection.Open();}else{throw new Exception("db数据库不存在:" + path);}}#region IsExists/// <summary>/// 是否存在数据库/// </summary>/// <param name="path">目录</param>/// <returns></returns>public static bool IsExistsDateBase(string path){if (Path.GetExtension(path).Equals(".db")){throw new SQLiteException("不是.db后缀,你查什么!!!");}return File.Exists(path);}/// <summary>/// 表中是否存在字段/// </summary>/// <param name="tableName">表名</param>/// <param name="key">区分大小写</param>/// <returns></returns>public bool IsExisTableFile(string tableName, string key){bool isExis = false;foreach (var item in GetFiles(tableName)){ {isExis = true;break;}}return isExis;}/// <summary>/// 查询表是否存在/// </summary>/// <param name="tableName">表名</param>/// <returns></returns>public bool IsExistsTable(string tableName){queryString = "SELECT name FROM sqlite_master WHERE name='" + tableName + "'";ExecuteQuery();if (!_reader.Read()){return false;}_reader.Close();return true;}#endregion#region Create/// <summary>/// 创建数据库/// </summary>/// <param name="path">目录</param>public static void CreateDateBase(string path){if (Path.GetExtension(path).Equals(".db")){SQLiteConnection.CreateFile(path);}else{throw new Exception("要创建数据库,则文件后缀必须为.db");}}#endregion#region Delete/// <summary>/// 删除一张表/// </summary>/// <param name="tableName">表名</param>/// <returns>是否成功删除</returns>public bool DeleteTable(string tableName){if (IsExistsTable(tableName)){queryString = "DROP TABLE " + tableName;ExecuteQuery();}if (IsExistsTable(tableName)){return false;}return true;}/// <summary>/// 删除一行数据/// </summary>/// <param name="tableName">表名</param>/// <param name="key">key</param>/// <param name="value">值</param>public void DeleteLine(string tableName, string key, string value){queryString = "delete from " + tableName + " where " + key + " = " + "'" + value + "'";ExecuteQuery();}/// <summary>/// 删除数据库/// </summary>/// <param name="path"></param>public void DeleteDateBase(string path){if (File.Exists(path)){if (Path.GetExtension(path).Equals(".db")){File.Delete(path);}else{throw new FileNotFoundException("让你删除数据库文件,删啥呢");}}}#endregion#region Get/// <summary>/// 表中多少列/// </summary>/// <param name="tableName">表名</param>/// <returns>列数</returns>public int GetRowsCount(string tableName){queryString = "Select count(*) From " + tableName;ExecuteQuery();_reader.Read();return _reader.GetInt32(0);}/// <summary>/// 获取数据库中表数量/// </summary>/// <returns>返回数据库中表数量</returns>public int GetTablesCount(){return GetTablesName().Length;}/// <summary>/// 获取表中字段都有那些/// </summary>/// <param name="tableName">表名</param>/// <returns>字段数组</returns>public string[] GetFiles(string tableName){queryString = "Pragma Table_Info(" + tableName + ")";ExecuteQuery();List<string> tablesFiles = new List<string>();while (_reader.Read()){tablesFiles.Add(_reader["Name"].ToString());}return tablesFiles.ToArray();}/// <summary>/// 获取数据库中所有表名/// </summary>/// <returns>所有表名数组</returns>public string[] GetTablesName(){queryString = "select name from sqlite_master where type='table' order by name";ExecuteQuery();List<string> tablesName = new List<string>();while (_reader.Read()){// 表名tablesName.Add(_reader["Name"].ToString());}return tablesName.ToArray();}/// <summary>/// 获取表中一列/// </summary>/// <param name="tableName">表名</param>/// <param name="fileName">字段名</param>/// <returns>列数组</returns>public string[] GetRows(string tableName, string fileName){if (!IsExistsTable(tableName)){throw new FileNotFoundException("表不存在:" + tableName);}if (!IsExisTableFile(tableName, fileName)){throw new Exception("表中不存在字段:" + fileName);}SQLiteDataAdapter sda = new SQLiteDataAdapter("select " + fileName + " from " + tableName, _connection);DataTable dt = new DataTable();sda.Fill(dt);string[] rows = new string[dt.Rows.Count];for (int i = 0; i < dt.Rows.Count; i++){rows[i] = dt.Rows[i][fileName].ToString();}sda.Dispose();dt.Dispose();return rows;}/// <summary>/// 获取行数据,可能会有同名字段,会返回多条数据/// </summary>/// <param name="tableName">表名</param>/// <param name="key"></param>/// <param name="keyValue"></param>/// <returns></returns>public List<string[]> GetLines(string tableName,string key,string keyValue){queryString = string.Format("select * from {0} where {1} = '{2}'", tableName, key, keyValue);ExecuteQuery();string[] array = new string[_reader.FieldCount];List<string[]> result = new List<string[]>();while (_reader.Read()){for (int i = 0; i < _reader.FieldCount -1; i++){array[i] = Convert.ToString( _reader[i]);}result.Add(array);}return result;}public List<string[]> GetAllLines(string tableName){queryString = string.Format("select * from {0}", tableName);ExecuteQuery();string[] array = new string[_reader.FieldCount];List<string[]> result = new List<string[]>();while (_reader.Read()){for (int i = 0; i < _reader.FieldCount - 1; i++){array[i] = Convert.ToString(_reader[i]);}result.Add(array);}return result;}#endregion#region Update/// <summary>/// 更新某一行的,某一个值/// </summary>/// <param name="tableName"></param>/// <param name="key"></param>/// <param name="keyVale"></param>/// <param name="updateKey">更新key</param>/// <param name="updateValue"></param>public void UpdatePropety(string tableName,string key,string keyVale,string updateKey,string updateValue){queryString = string.Format("UPDATE {0} SET {1} = '{2}' WHERE {3} = '{4}'", tableName, updateKey, updateValue, key, keyVale);          ExecuteQuery();}/// <summary>/// 列数据为同一个/// </summary>/// <param name="tableName"></param>/// <param name="key"></param>/// <param name="value"></param>public bool UpdateColumns(string tableName,string updateKey, string UpdateValue){if (!IsExistsTable(tableName)){throw new FileNotFoundException("没有表: " + tableName);}if (!IsExisTableFile(tableName, updateKey)){throw new Exception("没有关键key:" + updateKey);}queryString = "UPDATE " + tableName + " SET " + updateKey + " = '" + UpdateValue + "'";ExecuteQuery();foreach (var item in GetRows(tableName,updateKey)){if (!item.Equals(UpdateValue)){return false;}}return true;}#endregion#region Insert/// <summary>/// 表中插入一列/// </summary>/// <param name="tableName">表名</param>/// <param name="key">key</param>/// <returns>是否操作成功</returns>public bool InsertRows(string tableName, string key, SQLiteType sQLiteType){if (IsExistsTable(tableName)){if (IsExisTableFile(tableName, key)){throw new Exception("key值已存在,不可重复添加 :" + key);}else{queryString = "alter table " + tableName + " add column " + key + " " + sQLiteType.ToString();ExecuteQuery();}}else{throw new NullReferenceException("不存在表名:" + tableName);}if (IsExisTableFile(tableName, key)){return true;}else{return false;}}#endregion#region Rename/// <summary>/// 重命名表名/// </summary>/// <param name="tableName">要修改的表名</param>/// <param name="newName">新表名</param>/// <returns>是否重命名成功</returns>public bool RenameTable(string tableName, string newName){if (IsExistsTable(tableName)){queryString = "ALTER TABLE " + tableName + " RENAME TO " + newName;ExecuteQuery();}else{throw new FileNotFoundException("无法重命名不存在的表:" + tableName);}if (IsExistsTable(newName)){return true;}else{return false;}}/// <summary>/// 重命名字段/// </summary>/// <param name="tableName"></param>/// <param name="fileName"></param>/// <param name="newFileName"></param>/// <returns></returns>public bool RenameTableFile(string tableName, string fileName, string newFileName){if (!IsExistsTable(tableName)){throw new FileNotFoundException("表不存在:" + tableName);}return false;}#endregion#region Todo//创建表//插入行//删除列//获取第N行、第一行、最后一行数据public void CreateTables(string tables){}public void InsertLines(string tablesName,string[] values){}/// <summary>/// 删除列/// </summary>/// <param name="key"></param>public void DeleteRows(string key){}#endregionpublic void Dispose(){_connection?.Close();_connection?.Dispose();_reader?.Dispose();_command?.Dispose();}private void ExecuteQuery(){_command = _connection.CreateCommand();_command.CommandText = queryString;_reader = _command.ExecuteReader();}public enum SQLiteType{blob,integer,varchar,text,}}
}

C# 读取SQLite相关推荐

  1. cocos2d-x 3.0rc2中读取sqlite文件

    cocos2d-x 3.0rc2中读取sqlite文件的方式,在Android中直接读取软件内的会失败.须要复制到可写的路径下 sqlite3* dbFile = NULL;std::string p ...

  2. python 读取sqlite存入文件_如何通过python读取sqlite数据文件

    sqlite简介:sqlite是一个进程内的库,实现了自给自足的.无服务器的.零配置的.事务性的 SQL 数据库引擎.它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它(如安卓系统),它占 ...

  3. python读取数据库文件的扩展名_Python读取sqlite数据库文件的方法分析

    本文实例讲述了Python读取sqlite数据库文件的方法.分享给大家供大家参考,具体如下: 这是Python内置的,不需要pip install 包 数据库里面有很多张表 要操作数据库首先要连接co ...

  4. Android 控制台读取sqlite数据库以及adb获取root权限问题

    (个人经验,仅供参考,错误之处,敬请谅解) 读取sqlite数据文件 1.命令行     adb.sqlite命令最好设置成环境变量,否则需要先进入该文件夹. adb shell 进入虚拟机shell ...

  5. python读取 .sqlite 数据库文件

    继上一篇文章<python实现[国家统计局]三级区划代码和城乡划分代码爬取>我们爬取了国家统计局中公布出来的行政区划编码数据,今天我们发现了民政局也公布了类似的数据,但是这个不需要爬取,可 ...

  6. linux读取sqlite数据库,linux 下sqlite数据库数据的备份和导入表格

    (1)数据导入 建立了Sqlite数据库后就要建立表输入数据了,多数时候数据量较大,手动输入不可能,必须用导入语句 导入逗号分隔csv格式数据 首先建立一个表,比如test.db中建表test,如果表 ...

  7. Python读取SQLite数据库数据写入csv

    import sqlite3 import bd_gc_84 import csv import timestart =time.clock() print("正在运行........... ...

  8. python读取文件第n行-python读取文件第n行

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. pos = pos - 1 try: f.seek(pos, 2) #从 ...

  9. 数据存储之-SQLite数据库二

    1.SQLite事务 简单点说就是:写在事务里的所有数据库操作都成功,事务提交,否则,事务回滚,就是回到前面 的状态--未执行数据库操作的时候!另外,前面我们也将了,在data/data/<包名 ...

  10. sqlite 查询 支持多用户同时_开源时代的后端程序员必须要了解的一个数据库SQLite...

    在过去工作的十年里,我主要使用了三大主流的数据库,SqlServer.MySql.Oracle.小型数据库还使用过Access.因为一直做后端开发的原因,很少使用SQLite数据库,因为我一直认为SQ ...

最新文章

  1. 总结关于Set集合的一些基本用法
  2. c 语言寻找最小生成树,求助,关于求无向图的最小生成树代码
  3. 鸿蒙系统2.0什么时候上线,华为官方:鸿蒙系统2.0上线,手机能否搭载鸿蒙操作系统?...
  4. Microsoft Visual Studio 2005 Beta 2 下载地址
  5. Hive记录-配置远程连接(JAVA/beeline)
  6. 数据结构实验之栈与队列二:一般算术表达式转换成后缀式
  7. 转发离线安装 Android Studio 更新
  8. QT使用xsl将xml为html,使用xslt 2.0将属性设置为根元素(Puting attributes to the root-element with xslt 2.0)...
  9. 中石油训练赛 - Bee Problem(dfs+连通块)
  10. IOS NSArray,NSDictionary
  11. canvas绘制竖排的数字_Python绘制可爱的卡通人物 | 【turtle使用】
  12. POJ 1947 Rebuilding Roads (树dp + 背包思想)
  13. sqlserverdatasouce控件如何让添加删除修改自动化
  14. Ubuntu创建快捷方式
  15. 【转】对JavaScript调用堆栈和setTimeout用法的深入研究
  16. 安卓开发3d模型展示源码_Android(安卓)全套开发资料视频+源码
  17. 5.VM虚拟机网络设置---桥接模式
  18. 【实战应用】后端返回支付宝HTML,如何使用.H5端调用支付宝支付
  19. IEEE邮件曝光,禁止华为员工审稿!
  20. 【无标题】PHP小皮中出现拒绝访问(使用密码:YES)

热门文章

  1. RFC1738——Uniform Resource Locators统一资源定位器 (URL)
  2. 用户行为序列推荐模型
  3. [2019年国庆专题训练] dp专题训练
  4. 计算机网络中属于资源子网的是,属于计算机网络的资源子网
  5. 贴片元器件与插件元器件的区别在哪?
  6. 站长 给windows7的系统保留分区设置驱动器号
  7. 重装战姬电脑版模拟器怎么玩
  8. 术语-PM:PM/项目管理 百科
  9. maven install 报错 error:java找不到符号
  10. SAP中通过放大成本核算批量的方式解决由采购金额过小导致的”成本构成分解为零”的问题