当前位置:Gxlcms > 数据库问题 > .net调用sqlite数据库

.net调用sqlite数据库

时间:2021-07-01 10:21:17 帮助过:16人阅读

我最近完成了一个项目,叫通讯录软件。这个是很简单的系统,业务方面就不说了。我想分享一下,为什么要用到sqlite数据库。

我们在开发通讯录的时候,就希望通讯录在联网或者断网的时候,都可以查询通讯录的信息。那就需要将通讯录的内容要同步到本地,sqlite是比较轻便的数据库,非常利于存储在本地。解决方案很简单,联网的时候,我直接访问sql server数据库服务器,但是在网络不通的时候,我们只需要读取sqlite的数据就可以了。

(1)创建sqlite表

我下载了一个SQLite Expert Professional 3工具,直接创建存储通讯录信息的表。SQLite Expert Professional 3工具挺好用的,不过正式版是需要钱的。在创建数据表的过程中,我们要注意的地方就是DataTime类型的数据如何保存。在sqlite数据库里面,我认为最好的方式就是将日期保存为字符串就好了,如果需要的时候,取出来再处理。

(2)引入dll

在使用sqlite数据库的时候,我们在项目工程中引入System.Data.SQLite.dll

(3)C#使用sqlite数据库的类

这是我们这篇文章最重要的内容,就是分享一下sqlite操作的基本类,代码如下:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Data.SQLite;
  5. using System.Data;
  6. namespace AddressBook
  7. {
  8. class SQLiteHelper
  9. {
  10. private SQLiteConnection conn = null;
  11. private string connString = string.Empty;
  12. public string ConnString
  13. {
  14. get { return connString; }
  15. set { connString = value; }
  16. }
  17. private string err = string.Empty;
  18. public string Err
  19. {
  20. get { return err; }
  21. set { err = value; }
  22. }
  23. public SQLiteHelper()
  24. {
  25. string connString = "Data Source =" + Environment.CurrentDirectory + "/AddressBook.db";
  26. conn = new SQLiteConnection(connString);//创建数据库实例,指定文件位置
  27. //conn.Open();//打开数据库,若文件不存在会自动创建
  28. }
  29. /// <summary>
  30. /// 创建表
  31. /// </summary>
  32. /// <returns></returns>
  33. public int CreateTables(string sql)
  34. {
  35. SQLiteCommand cmdCreateTable = new SQLiteCommand(sql, conn);
  36. cmdCreateTable.ExecuteNonQuery();//如果表不存在,创建数据表
  37. return 1;
  38. }
  39. /// <summary>
  40. /// 操作数据库
  41. /// </summary>
  42. /// <param name="sql"></param>
  43. /// <returns></returns>
  44. public int ExecNoQuery(string sql)
  45. {
  46. int retValue = -1;
  47. try
  48. {
  49. conn.Open();
  50. SQLiteCommand cmd = new SQLiteCommand(sql, conn);
  51. retValue = cmd.ExecuteNonQuery();
  52. conn.Close();
  53. }
  54. catch (Exception ex)
  55. {
  56. err = ex.Message;
  57. return -1;
  58. }
  59. return retValue;
  60. }
  61. /// <summary>
  62. /// 获取科室数据
  63. /// </summary>
  64. /// <returns></returns>
  65. public DataSet GetDataSet(string sql)
  66. {
  67. try
  68. {
  69. DataSet dataset = new DataSet();
  70. SQLiteDataAdapter adapter = new SQLiteDataAdapter();
  71. adapter.SelectCommand = new SQLiteCommand(sql, conn);
  72. adapter.Fill(dataset);
  73. return dataset;
  74. }
  75. catch (Exception ex)
  76. {
  77. err = ex.Message;
  78. return null;
  79. }
  80. }
  81. /// <summary>
  82. /// 返回1个字符串
  83. /// </summary>
  84. /// <param name="sql"></param>
  85. /// <returns></returns>
  86. public string ExecReturenOne(string sql)
  87. {
  88. string result = string.Empty;
  89. try
  90. {
  91. conn.Open();
  92. SQLiteCommand cmd = new SQLiteCommand(sql, conn);
  93. object obj = cmd.ExecuteScalar();
  94. if (obj != null)
  95. {
  96. result = obj.ToString();
  97. }
  98. conn.Close();
  99. }
  100. catch (Exception ex)
  101. {
  102. if (conn.State == System.Data.ConnectionState.Open)
  103. {
  104. conn.Close();
  105. }
  106. err = ex.Message;
  107. return "";
  108. }
  109. return result;
  110. }
  111. }
  112. }



版权声明:本文为博主原创文章,未经博主允许不得转载。

.net调用sqlite数据库

标签:c#   sqlite   通讯录   

人气教程排行