SQLiteHelper class:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Data;
  5. using System.Data.OleDb;
  6. using System.Data.SQLite;
  7. using System.Windows.Forms;
  8. namespace TestSQLite
  9. {
  10. public class SqliteHelper
  11. {
  12. //连接字符串
  13. private static string str ="Data source="+ AppDomain.CurrentDomain.BaseDirectory + "\\DATA.db";
  14.  
  15. /// <summary>
  16. /// 增删改
  17. /// 20180723
  18. /// </summary>
  19. /// <param name="sql">sql语句</param>
  20. /// <param name="param">sql参数</param>
  21. /// <returns>受影响的行数</returns>
  22. public static int ExecuteNonQuery(string sql, params SQLiteParameter[] param)
  23. {
  24. try
  25. {
  26. using (SQLiteConnection con = new SQLiteConnection(str))
  27. {
  28. using (SQLiteCommand cmd = new SQLiteCommand(sql, con))
  29. {
  30. con.Open();
  31. if (param != null)
  32. {
  33. cmd.Parameters.AddRange(param);
  34. }
  35.  
  36. string sql2 = cmd.CommandText;
  37. //con.Close();
  38. return cmd.ExecuteNonQuery();
  39. }
  40. }
  41. }
  42. catch (SQLiteException se)
  43. {
  44. return 0;
  45. }
  46. }
  47.  
  48. /// <summary>
  49. /// 增删改
  50. /// 20180723
  51. /// </summary>
  52. /// <param name="sql">sql语句</param>
  53. /// <param name="param">sql参数</param>
  54. /// <returns>受影响的行数</returns>
  55. public static int ExecuteNonQuery(string sql)
  56. {
  57. try
  58. {
  59. using (SQLiteConnection con = new SQLiteConnection(str))
  60. {
  61. using (SQLiteCommand cmd = new SQLiteCommand(sql, con))
  62. {
  63. con.Open();
  64. string sql2 = cmd.CommandText;
  65. con.Close();
  66. return cmd.ExecuteNonQuery();
  67. }
  68. }
  69. }
  70. catch (SQLiteException se)
  71. {
  72. return 0;
  73. }
  74. }
  75.  
  76. /// <summary>
  77. /// 查询
  78. /// 20180723
  79. /// </summary>
  80. /// <param name="sql">sql语句</param>
  81. /// <param name="param">sql参数</param>
  82. /// <returns>首行首列</returns>
  83. public static object ExecuteScalar(string sql)
  84. {
  85. try
  86. {
  87. using (SQLiteConnection con = new SQLiteConnection(str))
  88. {
  89. using (SQLiteCommand cmd = new SQLiteCommand(con))
  90. {
  91. con.Open();
  92. cmd.CommandText = sql;
  93. return cmd.ExecuteScalar();
  94. }
  95. }
  96. }
  97. catch(Exception ex){
  98. MessageBox.Show(ex.Message );
  99. return null;
  100.  
  101. }
  102.  
  103. }
  104.  
  105. /// <summary>
  106. /// 查询
  107. /// 20180723
  108. /// </summary>
  109. /// <param name="sql">sql语句</param>
  110. /// <param name="param">sql参数</param>
  111. /// <returns>首行首列</returns>
  112. public static object ExecuteScalar(string sql, params SQLiteParameter[] param)
  113. {
  114. using (SQLiteConnection con = new SQLiteConnection(str))
  115. {
  116. using (SQLiteCommand cmd = new SQLiteCommand(sql, con))
  117. {
  118. con.Open();
  119. if (param != null)
  120. {
  121. cmd.Parameters.AddRange(param);
  122. }
  123.  
  124. return cmd.ExecuteScalar();
  125. }
  126. }
  127. }
  128.  
  129. /// <summary>
  130. /// 多行查询
  131. /// 20180723
  132. /// </summary>
  133. /// <param name="sql">sql语句</param>
  134. /// <param name="param">sql参数</param>
  135. /// <returns>SQLiteDateReader</returns>
  136. public static SQLiteDataReader ExecuteReader(string sql, params SQLiteParameter[] param)
  137. {
  138. using (SQLiteConnection con = new SQLiteConnection(str))
  139. {
  140. using (SQLiteCommand cmd = new SQLiteCommand(sql, con))
  141. {
  142. if (param != null)
  143. {
  144. cmd.Parameters.AddRange(param);
  145. }
  146. try
  147. {
  148. con.Open();
  149. return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
  150. }
  151. catch (Exception ex)
  152. {
  153. con.Close();
  154. con.Dispose();
  155. throw ex;
  156. }
  157. }
  158. }
  159.  
  160. }
  161.  
  162. /// <summary>
  163. /// 查询多行数据
  164. /// 20180723
  165. /// </summary>
  166. /// <param name="sql">sql语句</param>
  167. /// <param name="param">sql参数</param>
  168. /// <returns>一个表</returns>
  169. public static DataTable ExecuteTable(string sql, params SQLiteParameter[] param)
  170. {
  171. DataTable dt = new DataTable();
  172. using (SQLiteDataAdapter sda = new SQLiteDataAdapter(sql, str))
  173. {
  174. if (param != null)
  175. {
  176. sda.SelectCommand.Parameters.AddRange(param);
  177. }
  178. sda.Fill(dt);
  179. }
  180. return dt;
  181. }
  182.  
  183. /// <summary>
  184. /// 数据插入
  185. /// 20180725
  186. /// </summary>
  187. /// <param name="tbName">表名</param>
  188. /// <param name="insertData">需要插入的数据字典</param>
  189. /// <returns>受影响行数</returns>
  190. public static int ExecuteInsert(string tbName, Dictionary<String, String> insertData)
  191. {
  192. string point = "";//分隔符号(,)
  193. string keyStr = "";//字段名拼接字符串
  194. string valueStr = "";//值的拼接字符串
  195.  
  196. List<SQLiteParameter> param = new List<SQLiteParameter>();
  197. foreach (string key in insertData.Keys)
  198. {
  199. keyStr += string.Format("{0} `{1}`", point, key);
  200. valueStr += string.Format("{0} @{1}", point, key);
  201. param.Add(new SQLiteParameter("@" + key, insertData[key]));
  202. point = ",";
  203. }
  204. string sql = string.Format("INSERT INTO `{0}`({1}) VALUES({2})", tbName, keyStr, valueStr);
  205.  
  206. //return sql;
  207. return ExecuteNonQuery(sql, param.ToArray());
  208.  
  209. }
  210.  
  211. /// <summary>
  212. /// 执行Update语句
  213. /// 20180725
  214. /// </summary>
  215. /// <param name="tbName">表名</param>
  216. /// <param name="where">更新条件:id=1</param>
  217. /// <param name="insertData">需要更新的数据</param>
  218. /// <returns>受影响行数</returns>
  219. public static int ExecuteUpdate(string tbName, string where, Dictionary<String, String> insertData)
  220. {
  221. string point = "";//分隔符号(,)
  222. string kvStr = "";//键值对拼接字符串(Id=@Id)
  223.  
  224. List<SQLiteParameter> param = new List<SQLiteParameter>();
  225. foreach (string key in insertData.Keys)
  226. {
  227. kvStr += string.Format("{0} {1}=@{2}", point, key, key);
  228. param.Add(new SQLiteParameter("@" + key, insertData[key]));
  229. point = ",";
  230. }
  231. string sql = string.Format("UPDATE `{0}` SET {1} WHERE {2}", tbName, kvStr, where);
  232.  
  233. return ExecuteNonQuery(sql, param.ToArray());
  234.  
  235. }
  236.  
  237. /// <summary>
  238. /// 查询
  239. /// 20180723
  240. /// </summary>
  241. /// <param name="sql">sql语句</param>
  242. /// <param name="param">sql参数</param>
  243. /// <returns>首行首列</returns>
  244. public static DataTable GetDataTable(string sql)
  245. {
  246. try
  247. {
  248. using (SQLiteConnection con = new SQLiteConnection(str))
  249. {
  250. using (SQLiteCommand cmd = new SQLiteCommand(sql , con))
  251. {
  252. con.Open();
  253. SQLiteDataAdapter ad = new SQLiteDataAdapter(cmd);
  254. DataTable tb = new DataTable();
  255. ad.Fill(tb);
  256. con.Close();
  257. return tb;
  258.  
  259. }
  260. }
  261. }
  262. catch (Exception ex)
  263. {
  264. MessageBox.Show(ex.Message);
  265. return null;
  266.  
  267. }
  268.  
  269. }
  270.  
  271. }
  272. }

  

Test:

  1. //see one value where .........
  2. MessageBox.Show("" + SqliteHelper.ExecuteScalar("select uid from members where uid<>''"));
  3. //see sql create syntax
  4. DataTable tb = SqliteHelper.GetDataTable("select * from sqlite_master where name = 'members'");
  5. MessageBox.Show("" + tb.Rows[0]["sql"]);
  6. //or:
  7. //string syntax = "" + SqliteHelper.ExecuteScalar("select sql from sqlite_master where name = 'members'");
  8. //MessageBox.Show(syntax);
  9.  
  10. //see if column exists in table 'members'
  11. bool hasCol = int.Parse("" + SqliteHelper.ExecuteScalar("select count(name) from sqlite_master where name = 'members' and sql like '%sendAccount%'")) > 0;
  12. if (!hasCol)
  13. {
  14. //add column: ALTER TABLE table-name ADD COLUMN column-name column-type
  15. SqliteHelper.ExecuteScalar("alter table members add COLUMN sendAccount varchar(20)");
  16. //alter table student drop column name // 该行在SQlite中不能用,SQlite不支持drop
  17. //SqliteHelper.ExecuteScalar("alter table members drop sendAccount33");
  18.  
  19. }
  20.  
  21. //drop table if exists A
  22. string s = "" + SqliteHelper.ExecuteScalar("drop table if exists members2");
  23. MessageBox.Show(s);

  

参考:https://blog.csdn.net/wuyou1336/article/details/53770799

c# SQLite 判断表、字段是否存在的方法,新增、删除、重命名列的更多相关文章

  1. oracle创建表之前判断表是否存在,如果存在则删除已有表

    Mysql 创建表之前判断表是否存在,如果存在则删除已有表 DROP TABLE IF EXISTS sys_area; CREATE TABLE sys_area ( id int NOT NULL ...

  2. [sqlite] 判断表、视图是否存在及常用C#操作语句

    1,判断表是否存在: SELECT name, sql FROM sqlite_master WHERE type="table" AND name = "Dom&quo ...

  3. sqlite 判断表中是否包含 某个字段

    数据库 都有一个 根表..(我的理解) 也就是 你创建了一个数据库 里面就带有 一个表 sqlite_master 字段有 type , name  , tbl_name , rootpage ,sq ...

  4. sqlite获取表字段

    sqlite下能通过sqlite_master获取指定数据库的表信息和表结构 但是通过sqlite_master不能获取表字段的信息 如果需要获取指定表字段的所有信息 可以使用如下语法: PRAGMA ...

  5. SQLite判断某表是否存在

    SQLite判断表是否存在:其实很简单,只要查看sqlite_master表中是否存在这条数据就可以知道了.SELECT count(*) FROM sqlite_master WHERE type= ...

  6. Oracle删除表、字段之前判断表、字段是否存在

    这篇文章主要介绍了Oracle删除表.字段之前判断表.字段是否存在的相关资料,需要的朋友可以参考下 在Oracle中若删除一个不存在的表,如 “DROP TABLE tableName”,则会提示: ...

  7. Android数据库之判断表是否存在

    Android开发的时候我们可能会用到它的本地数据库,在使用的时候有可能我们已经储存了数据了,但是,我们的表已经创建了,里面有数据,我们要怎么判断表是否已经创建可能就需要琢磨一下. 以下便是利用了,查 ...

  8. sqlite查看所有表名、判断表是否存在,字段名及字段信息

    sqlite查看所有表名.判断表是否存在,字段名及字段信息   sqlite查看所有表名及字段名查询table,type 段是'table',name段是table的名字, select name f ...

  9. SQL Server 判断表中是否存在某字段

    功能:判断表中是否存在某字段,若不存在,则新增该字段 语句: IF NOT EXIST (SELECT 1 FROM [DATABASE].[SCHEMA].SYSCOLUMNS WHERE ID=O ...

随机推荐

  1. Assets.xcassets的详细使用方法

    开始之前,首先回顾一下iOS7初体验(1)——第一个应用程序HelloWorld中的一张图,如下所示: 本文分享一下Images.xcassets的体验~_~ 1. 打开此前使用过的HelloWorl ...

  2. DCGAN生成式对抗网络--keras实现

    本文针对cifar10 图集进行了DCGAN的复现. 其中库中的SpectralNormalizationKeras需添加至python环境中 该篇代码如下: from keras import ba ...

  3. 006-saltstack之远程执行

    1.目标 2.执行模块 3.返回 salt ‘*’ cmd.run ‘uptime’ 命令 目标 执行模块 执行模块参数 1.SlatStack远程执行–目标 执行目标:https://docs.sa ...

  4. 前端matrix矩阵的变化

    css3 transform中的matrix矩阵   CSS3中的矩阵CSS3中的矩阵指的是一个方法,书写为matrix()和matrix3d(),前者是元素2D平面的移动变换(transform), ...

  5. 【学习】027 Dubbo

    Dubbo概述 Dubbo的背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用架构 ...

  6. docker概述和安装

    一:概述 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用 ...

  7. Excel去重操作

    工作中经常遇到要对 Excel 中的某一列进行去重操作,得到不重复的结果,总结如下: 选中要操作的列(鼠标点击指定列的字母,如T列) 点击"数据"中"排序和筛选" ...

  8. 任意修改网页内容JS代码

    浏览器输入框执行,chrome需要粘贴后,需要在前面手打javascript: 因为粘贴的会自动过滤 javascript:document.body.contentEditable='true'; ...

  9. MyEclipse更改项目名web发布名字不改问题

    步骤: 右键项目-->选择propertis-->MyEclipse-->Project Facets-->Web-->右侧更改Web Context-root 如下图:

  10. 【shell】文本匹配问题

    原文本通过TITLE分段 TITLE1 xxx yyy TITLE2 xxx yyy hello zzz hello TITLE3 xxx hello 类似于这样的,hello可能有多个,需要打印出含 ...