关键词搜索

源码搜索 ×
×

C# SQLite数据库 访问封装类

发布2015-10-26浏览9141次

详情内容

在客户端配置文件<configuration>节点下,添加:

  1. <connectionStrings>
  2. <add name="localdb" connectionString="Data Source=config/local.db;Version=3;UseUTF16Encoding=True;" providerName="System.Data.SQLite.SQLiteFactory"/>
  3. </connectionStrings>
其中【localdb】是本地SQLite数据库的名称,【config/local.db】是在当前程序运行目录下SQLite数据库位置

C# SQLite数据库  访问封装类代码:

  1. /// <summary>
  2. /// 本类为SQLite数据库帮助静态类,使用时只需直接调用即可,无需实例化
  3. /// </summary>
  4. public static class SQLiteHelper
  5. {
  6. // Application.StartupPath
  7. public static string LocalDbConnectionString = ConfigurationManager.ConnectionStrings["localdb"].ConnectionString;
  8. #region ExecuteNonQuery
  9. /// <summary>
  10. /// 执行数据库操作(新增、更新或删除)
  11. /// </summary>
  12. /// <param name="connectionString">连接字符串</param>
  13. /// <param name="cmd">SqlCommand对象</param>
  14. /// <returns>所受影响的行数</returns>
  15. public static int ExecuteNonQuery(string connectionString, SQLiteCommand cmd)
  16. {
  17. int result = 0;
  18. if (connectionString == null || connectionString.Length == 0)
  19. throw new ArgumentNullException("connectionString");
  20. using (SQLiteConnection con = new SQLiteConnection(connectionString))
  21. {
  22. SQLiteTransaction trans = null;
  23. PrepareCommand(cmd, con, ref trans, true, cmd.CommandType, cmd.CommandText);
  24. try
  25. {
  26. result = cmd.ExecuteNonQuery();
  27. trans.Commit();
  28. }
  29. catch (Exception ex)
  30. {
  31. trans.Rollback();
  32. throw ex;
  33. }
  34. }
  35. return result;
  36. }
  37. /// <summary>
  38. /// 执行数据库操作(新增、更新或删除)
  39. /// </summary>
  40. /// <param name="connectionString">连接字符串</param>
  41. /// <param name="commandText">执行语句或存储过程名</param>
  42. /// <param name="commandType">执行类型</param>
  43. /// <returns>所受影响的行数</returns>
  44. public static int ExecuteNonQuery(string connectionString, string commandText, CommandType commandType)
  45. {
  46. int result = 0;
  47. if (connectionString == null || connectionString.Length == 0)
  48. throw new ArgumentNullException("connectionString");
  49. if (commandText == null || commandText.Length == 0)
  50. throw new ArgumentNullException("commandText");
  51. SQLiteCommand cmd = new SQLiteCommand();
  52. using (SQLiteConnection con = new SQLiteConnection(connectionString))
  53. {
  54. SQLiteTransaction trans = null;
  55. PrepareCommand(cmd, con, ref trans, true, commandType, commandText);
  56. try
  57. {
  58. result = cmd.ExecuteNonQuery();
  59. trans.Commit();
  60. }
  61. catch (Exception ex)
  62. {
  63. trans.Rollback();
  64. throw ex;
  65. }
  66. }
  67. return result;
  68. }
  69. /// <summary>
  70. /// 执行数据库操作(新增、更新或删除)
  71. /// </summary>
  72. /// <param name="connectionString">连接字符串</param>
  73. /// <param name="commandText">执行语句或存储过程名</param>
  74. /// <param name="commandType">执行类型</param>
  75. /// <param name="cmdParms">SQL参数对象</param>
  76. /// <returns>所受影响的行数</returns>
  77. public static int ExecuteNonQuery(string connectionString, string commandText, CommandType commandType, params SQLiteParameter[] cmdParms)
  78. {
  79. int result = 0;
  80. if (connectionString == null || connectionString.Length == 0)
  81. throw new ArgumentNullException("connectionString");
  82. if (commandText == null || commandText.Length == 0)
  83. throw new ArgumentNullException("commandText");
  84. SQLiteCommand cmd = new SQLiteCommand();
  85. using (SQLiteConnection con = new SQLiteConnection(connectionString))
  86. {
  87. SQLiteTransaction trans = null;
  88. PrepareCommand(cmd, con, ref trans, true, commandType, commandText);
  89. try
  90. {
  91. result = cmd.ExecuteNonQuery();
  92. trans.Commit();
  93. }
  94. catch (Exception ex)
  95. {
  96. trans.Rollback();
  97. throw ex;
  98. }
  99. }
  100. return result;
  101. }
  102. #endregion
  103. #region ExecuteScalar
  104. /// <summary>
  105. /// 执行数据库操作(新增、更新或删除)同时返回执行后查询所得的第1行第1列数据
  106. /// </summary>
  107. /// <param name="connectionString">连接字符串</param>
  108. /// <param name="cmd">SqlCommand对象</param>
  109. /// <returns>查询所得的第1行第1列数据</returns>
  110. public static object ExecuteScalar(string connectionString, SQLiteCommand cmd)
  111. {
  112. object result = 0;
  113. if (connectionString == null || connectionString.Length == 0)
  114. throw new ArgumentNullException("connectionString");
  115. using (SQLiteConnection con = new SQLiteConnection(connectionString))
  116. {
  117. SQLiteTransaction trans = null;
  118. PrepareCommand(cmd, con, ref trans, true, cmd.CommandType, cmd.CommandText);
  119. try
  120. {
  121. result = cmd.ExecuteScalar();
  122. trans.Commit();
  123. }
  124. catch (Exception ex)
  125. {
  126. trans.Rollback();
  127. throw ex;
  128. }
  129. }
  130. return result;
  131. }
  132. /// <summary>
  133. /// 执行数据库操作(新增、更新或删除)同时返回执行后查询所得的第1行第1列数据
  134. /// </summary>
  135. /// <param name="connectionString">连接字符串</param>
  136. /// <param name="commandText">执行语句或存储过程名</param>
  137. /// <param name="commandType">执行类型</param>
  138. /// <returns>查询所得的第1行第1列数据</returns>
  139. public static object ExecuteScalar(string connectionString, string commandText, CommandType commandType)
  140. {
  141. object result = 0;
  142. if (connectionString == null || connectionString.Length == 0)
  143. throw new ArgumentNullException("connectionString");
  144. if (commandText == null || commandText.Length == 0)
  145. throw new ArgumentNullException("commandText");
  146. SQLiteCommand cmd = new SQLiteCommand();
  147. using (SQLiteConnection con = new SQLiteConnection(connectionString))
  148. {
  149. SQLiteTransaction trans = null;
  150. PrepareCommand(cmd, con, ref trans, true, commandType, commandText);
  151. try
  152. {
  153. result = cmd.ExecuteScalar();
  154. trans.Commit();
  155. }
  156. catch (Exception ex)
  157. {
  158. trans.Rollback();
  159. throw ex;
  160. }
  161. }
  162. return result;
  163. }
  164. /// <summary>
  165. /// 执行数据库操作(新增、更新或删除)同时返回执行后查询所得的第1行第1列数据
  166. /// </summary>
  167. /// <param name="connectionString">连接字符串</param>
  168. /// <param name="commandText">执行语句或存储过程名</param>
  169. /// <param name="commandType">执行类型</param>
  170. /// <param name="cmdParms">SQL参数对象</param>
  171. /// <returns>查询所得的第1行第1列数据</returns>
  172. public static object ExecuteScalar(string connectionString, string commandText, CommandType commandType, params SQLiteParameter[] cmdParms)
  173. {
  174. object result = 0;
  175. if (connectionString == null || connectionString.Length == 0)
  176. throw new ArgumentNullException("connectionString");
  177. if (commandText == null || commandText.Length == 0)
  178. throw new ArgumentNullException("commandText");
  179. SQLiteCommand cmd = new SQLiteCommand();
  180. using (SQLiteConnection con = new SQLiteConnection(connectionString))
  181. {
  182. SQLiteTransaction trans = null;
  183. PrepareCommand(cmd, con, ref trans, true, commandType, commandText);
  184. try
  185. {
  186. result = cmd.ExecuteScalar();
  187. trans.Commit();
  188. }
  189. catch (Exception ex)
  190. {
  191. trans.Rollback();
  192. throw ex;
  193. }
  194. }
  195. return result;
  196. }
  197. #endregion
  198. #region ExecuteReader
  199. /// <summary>
  200. /// 执行数据库查询,返回SqlDataReader对象
  201. /// </summary>
  202. /// <param name="connectionString">连接字符串</param>
  203. /// <param name="cmd">SqlCommand对象</param>
  204. /// <returns>SqlDataReader对象</returns>
  205. public static DbDataReader ExecuteReader(string connectionString, SQLiteCommand cmd)
  206. {
  207. DbDataReader reader = null;
  208. if (connectionString == null || connectionString.Length == 0)
  209. throw new ArgumentNullException("connectionString");
  210. SQLiteConnection con = new SQLiteConnection(connectionString);
  211. SQLiteTransaction trans = null;
  212. PrepareCommand(cmd, con, ref trans, false, cmd.CommandType, cmd.CommandText);
  213. try
  214. {
  215. reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
  216. }
  217. catch (Exception ex)
  218. {
  219. throw ex;
  220. }
  221. return reader;
  222. }
  223. /// <summary>
  224. /// 执行数据库查询,返回SqlDataReader对象
  225. /// </summary>
  226. /// <param name="connectionString">连接字符串</param>
  227. /// <param name="commandText">执行语句或存储过程名</param>
  228. /// <param name="commandType">执行类型</param>
  229. /// <returns>SqlDataReader对象</returns>
  230. public static DbDataReader ExecuteReader(string connectionString, string commandText, CommandType commandType)
  231. {
  232. DbDataReader reader = null;
  233. if (connectionString == null || connectionString.Length == 0)
  234. throw new ArgumentNullException("connectionString");
  235. if (commandText == null || commandText.Length == 0)
  236. throw new ArgumentNullException("commandText");
  237. SQLiteConnection con = new SQLiteConnection(connectionString);
  238. SQLiteCommand cmd = new SQLiteCommand();
  239. SQLiteTransaction trans = null;
  240. PrepareCommand(cmd, con, ref trans, false, commandType, commandText);
  241. try
  242. {
  243. reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
  244. }
  245. catch (Exception ex)
  246. {
  247. throw ex;
  248. }
  249. return reader;
  250. }
  251. /// <summary>
  252. /// 执行数据库查询,返回SqlDataReader对象
  253. /// </summary>
  254. /// <param name="connectionString">连接字符串</param>
  255. /// <param name="commandText">执行语句或存储过程名</param>
  256. /// <param name="commandType">执行类型</param>
  257. /// <param name="cmdParms">SQL参数对象</param>
  258. /// <returns>SqlDataReader对象</returns>
  259. public static DbDataReader ExecuteReader(string connectionString, string commandText, CommandType commandType, params SQLiteParameter[] cmdParms)
  260. {
  261. DbDataReader reader = null;
  262. if (connectionString == null || connectionString.Length == 0)
  263. throw new ArgumentNullException("connectionString");
  264. if (commandText == null || commandText.Length == 0)
  265. throw new ArgumentNullException("commandText");
  266. SQLiteConnection con = new SQLiteConnection(connectionString);
  267. SQLiteCommand cmd = new SQLiteCommand();
  268. SQLiteTransaction trans = null;
  269. PrepareCommand(cmd, con, ref trans, false, commandType, commandText, cmdParms);
  270. try
  271. {
  272. reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
  273. }
  274. catch (Exception ex)
  275. {
  276. throw ex;
  277. }
  278. return reader;
  279. }
  280. #endregion
  281. #region ExecuteDataSet
  282. /// <summary>
  283. /// 执行数据库查询,返回DataSet对象
  284. /// </summary>
  285. /// <param name="connectionString">连接字符串</param>
  286. /// <param name="cmd">SqlCommand对象</param>
  287. /// <returns>DataSet对象</returns>
  288. public static DataSet ExecuteDataSet(string connectionString, SQLiteCommand cmd)
  289. {
  290. DataSet ds = new DataSet();
  291. SQLiteConnection con = new SQLiteConnection(connectionString);
  292. SQLiteTransaction trans = null;
  293. PrepareCommand(cmd, con, ref trans, false, cmd.CommandType, cmd.CommandText);
  294. try
  295. {
  296. SQLiteDataAdapter sda = new SQLiteDataAdapter(cmd);
  297. sda.Fill(ds);
  298. }
  299. catch (Exception ex)
  300. {
  301. throw ex;
  302. }
  303. finally
  304. {
  305. if (cmd.Connection != null)
  306. {
  307. if (cmd.Connection.State == ConnectionState.Open)
  308. {
  309. cmd.Connection.Close();
  310. }
  311. }
  312. }
  313. return ds;
  314. }
  315. /// <summary>
  316. /// 执行数据库查询,返回DataSet对象
  317. /// </summary>
  318. /// <param name="connectionString">连接字符串</param>
  319. /// <param name="commandText">执行语句或存储过程名</param>
  320. /// <param name="commandType">执行类型</param>
  321. /// <returns>DataSet对象</returns>
  322. public static DataSet ExecuteDataSet(string connectionString, string commandText, CommandType commandType)
  323. {
  324. if (connectionString == null || connectionString.Length == 0)
  325. throw new ArgumentNullException("connectionString");
  326. if (commandText == null || commandText.Length == 0)
  327. throw new ArgumentNullException("commandText");
  328. DataSet ds = new DataSet();
  329. SQLiteConnection con = new SQLiteConnection(connectionString);
  330. SQLiteCommand cmd = new SQLiteCommand();
  331. SQLiteTransaction trans = null;
  332. PrepareCommand(cmd, con, ref trans, false, commandType, commandText);
  333. try
  334. {
  335. SQLiteDataAdapter sda = new SQLiteDataAdapter(cmd);
  336. sda.Fill(ds);
  337. }
  338. catch (Exception ex)
  339. {
  340. throw ex;
  341. }
  342. finally
  343. {
  344. if (con != null)
  345. {
  346. if (con.State == ConnectionState.Open)
  347. {
  348. con.Close();
  349. }
  350. }
  351. }
  352. return ds;
  353. }
  354. /// <summary>
  355. /// 执行数据库查询,返回DataSet对象
  356. /// </summary>
  357. /// <param name="connectionString">连接字符串</param>
  358. /// <param name="commandText">执行语句或存储过程名</param>
  359. /// <param name="commandType">执行类型</param>
  360. /// <param name="cmdParms">SQL参数对象</param>
  361. /// <returns>DataSet对象</returns>
  362. public static DataSet ExecuteDataSet(string connectionString, string commandText, CommandType commandType, params SQLiteParameter[] cmdParms)
  363. {
  364. if (connectionString == null || connectionString.Length == 0)
  365. throw new ArgumentNullException("connectionString");
  366. if (commandText == null || commandText.Length == 0)
  367. throw new ArgumentNullException("commandText");
  368. DataSet ds = new DataSet();
  369. SQLiteConnection con = new SQLiteConnection(connectionString);
  370. SQLiteCommand cmd = new SQLiteCommand();
  371. SQLiteTransaction trans = null;
  372. PrepareCommand(cmd, con, ref trans, false, commandType, commandText, cmdParms);
  373. try
  374. {
  375. SQLiteDataAdapter sda = new SQLiteDataAdapter(cmd);
  376. sda.Fill(ds);
  377. }
  378. catch (Exception ex)
  379. {
  380. throw ex;
  381. }
  382. finally
  383. {
  384. if (con != null)
  385. {
  386. if (con.State == ConnectionState.Open)
  387. {
  388. con.Close();
  389. }
  390. }
  391. }
  392. return ds;
  393. }
  394. #endregion
  395. #region 通用分页查询方法
  396. /// <summary>
  397. /// 通用分页查询方法
  398. /// </summary>
  399. /// <param name="connString">连接字符串</param>
  400. /// <param name="tableName">表名</param>
  401. /// <param name="strColumns">查询字段名</param>
  402. /// <param name="strWhere">where条件</param>
  403. /// <param name="strOrder">排序条件</param>
  404. /// <param name="pageSize">每页数据数量</param>
  405. /// <param name="currentIndex">当前页数</param>
  406. /// <param name="recordOut">数据总量</param>
  407. /// <returns>DataTable数据表</returns>
  408. public static DataTable SelectPaging(string connString, string tableName, string strColumns, string strWhere, string strOrder, int pageSize, int currentIndex, out int recordOut)
  409. {
  410. DataTable dt = new DataTable();
  411. recordOut = Convert.ToInt32(ExecuteScalar(connString, "select count(*) from " + tableName, CommandType.Text));
  412. string pagingTemplate = "select {0} from {1} where {2} order by {3} limit {4} offset {5} ";
  413. int offsetCount = (currentIndex - 1) * pageSize;
  414. string commandText = String.Format(pagingTemplate, strColumns, tableName, strWhere, strOrder, pageSize.ToString(), offsetCount.ToString());
  415. using (DbDataReader reader = ExecuteReader(connString, commandText, CommandType.Text))
  416. {
  417. if (reader != null)
  418. {
  419. dt.Load(reader);
  420. }
  421. }
  422. return dt;
  423. }
  424. #endregion
  425. #region 预处理Command对象,数据库链接,事务,需要执行的对象,参数等的初始化
  426. /// <summary>
  427. /// 预处理Command对象,数据库链接,事务,需要执行的对象,参数等的初始化
  428. /// </summary>
  429. /// <param name="cmd">Command对象</param>
  430. /// <param name="conn">Connection对象</param>
  431. /// <param name="trans">Transcation对象</param>
  432. /// <param name="useTrans">是否使用事务</param>
  433. /// <param name="cmdType">SQL字符串执行类型</param>
  434. /// <param name="cmdText">SQL Text</param>
  435. /// <param name="cmdParms">SQLiteParameters to use in the command</param>
  436. private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, ref SQLiteTransaction trans, bool useTrans, CommandType cmdType, string cmdText, params SQLiteParameter[] cmdParms)
  437. {
  438. if (conn.State != ConnectionState.Open)
  439. conn.Open();
  440. cmd.Connection = conn;
  441. cmd.CommandText = cmdText;
  442. if (useTrans)
  443. {
  444. trans = conn.BeginTransaction(IsolationLevel.ReadCommitted);
  445. cmd.Transaction = trans;
  446. }
  447. cmd.CommandType = cmdType;
  448. if (cmdParms != null)
  449. {
  450. foreach (SQLiteParameter parm in cmdParms)
  451. cmd.Parameters.Add(parm);
  452. }
  453. }
  454. #endregion
  455. }

使用demo:

  1. /// <summary>
  2. /// 获取数据库关键字信息
  3. /// </summary>
  4. /// <param name="category">分类</param>
  5. /// <param name="versions">版本</param>
  6. /// <returns></returns>
  7. private DataSet GetSystemDataBaseKeyWords(string category, string versions)
  8. {
  9. StringBuilder sql = new StringBuilder();
  10. sql.Append("SELECT Keywords , Versions , Type , Description , Category , Id , Extends ");
  11. sql.Append(" FROM A_DataBaseKeyWords ");
  12. sql.AppendFormat(" WHERE 1={0} ", "1");
  13. if (!String.IsNullOrEmpty(category))
  14. {
  15. sql.AppendFormat(" AND Category='{0}'", category);
  16. }
  17. if (!String.IsNullOrEmpty(versions))
  18. {
  19. sql.AppendFormat(" AND Versions='{0}'", versions);
  20. }
  21. return SQLiteHelper.ExecuteDataSet(SQLiteHelper.LocalDbConnectionString, sql.ToString(), CommandType.Text);
  22. }

小注:

为了屏蔽32与64位系统问题,请使用改SQLite的dll,下载地址:点击打开链接

作者:jiankunking 出处:http://blog.csdn.net/jiankunking


相关技术文章

最新源码

下载排行榜

点击QQ咨询
开通会员
返回顶部
×
微信扫码支付
微信扫码支付
确定支付下载
请使用微信描二维码支付
×

提示信息

×

选择支付方式

  • 微信支付
  • 支付宝付款
确定支付下载