SqlLiteClass.cs 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Data;
  7. using System.Data.SQLite;
  8. using System.Windows.Forms;
  9. using System.Collections;
  10. namespace OTSPartA_STDEditor
  11. {
  12. /// <summary>
  13. /// 用于标准库模块操作SQLlite系统标准库的封装类
  14. /// </summary>
  15. public class SqlLiteClass
  16. {
  17. #region 相关变量
  18. //系统STD文件路径
  19. static string RunPath = Application.StartupPath;
  20. static string str = "\\Config\\SysData\\";
  21. static string m_ParameterPath = RunPath+ str;
  22. private string m_STDDBPath = m_ParameterPath;
  23. //系统STD文件 数据库名称
  24. private string m_STDDBName = "OTSCleanlinesSTD.db";
  25. //系统STD文件 表名
  26. private const string m_STDTableName = "STDMinerals";
  27. //系统ElementRange表名
  28. private const string m_ElementRangeTableName = "MineralElements";
  29. #endregion
  30. #region SQLLite需要的对象
  31. /// <summary>
  32. /// 数据库连接定义
  33. /// </summary>
  34. private SQLiteConnection m_dbConnection;
  35. /// <summary>
  36. /// 适配器
  37. /// </summary>
  38. private SQLiteDataAdapter m_dataAdapter;
  39. #endregion
  40. #region 构造函数
  41. /// <summary>
  42. /// 构造函数
  43. /// </summary>
  44. public SqlLiteClass()
  45. {
  46. try
  47. {
  48. m_dbConnection = new SQLiteConnection("data source='" + m_STDDBPath + m_STDDBName + "'");
  49. m_dbConnection.Open();
  50. }
  51. catch (Exception ee)
  52. {
  53. string str = ee.ToString();
  54. }
  55. }
  56. public string GetSTDTableName() {
  57. return m_STDTableName;
  58. }
  59. /// <summary>
  60. /// 构造函数
  61. /// </summary>
  62. /// <param name="connectionString"></param>
  63. public SqlLiteClass(string connectionString)
  64. {
  65. try
  66. {
  67. m_dbConnection = new SQLiteConnection("data source='"+connectionString + "'");
  68. m_dbConnection.Open();
  69. }
  70. catch (Exception)
  71. {
  72. }
  73. }
  74. #endregion
  75. #region 封装方法
  76. /// <summary>
  77. /// 传入SQL语句,从指定的数据库,进行查询,并返回DataTable
  78. /// </summary>
  79. /// <param name="in_str_sql"></param>
  80. /// <returns></returns>
  81. public DataTable GetDTFormSysSTDBySQLString(string in_str_sql)
  82. {
  83. DataTable ret_dt = new DataTable();
  84. try
  85. {
  86. m_dataAdapter = new SQLiteDataAdapter(in_str_sql, m_dbConnection);
  87. DataSet ds = new DataSet();
  88. m_dataAdapter.Fill(ds);
  89. ret_dt = ds.Tables[0];
  90. }
  91. catch (Exception ee)
  92. {
  93. string str = ee.ToString();
  94. }
  95. return ret_dt;
  96. }
  97. /// <summary>
  98. /// 执行修改操作
  99. /// </summary>
  100. /// <param name="in_str_sql">执行语句</param>
  101. /// <returns>bool</returns>
  102. public bool UpdateSysDataDB(string in_str_sql)
  103. {
  104. try
  105. {
  106. SQLiteCommand sQLiteCommand = new SQLiteCommand(in_str_sql, m_dbConnection);
  107. int result = sQLiteCommand.ExecuteNonQuery();
  108. return result > 0;
  109. }
  110. catch (Exception )
  111. {
  112. return false;
  113. }
  114. }
  115. public bool ExecuteBlob(string strsql, string strvaluename, byte[] blobdata, int idatalen)
  116. {
  117. try
  118. {
  119. using (SQLiteCommand sqlComm = new SQLiteCommand(strsql, m_dbConnection))
  120. {
  121. SQLiteParameter para = new SQLiteParameter(strvaluename, DbType.Binary);
  122. para.Value = blobdata;
  123. sqlComm.Parameters.Add(para);
  124. return sqlComm.ExecuteNonQuery()>0;
  125. }
  126. }
  127. catch /*(SQLiteException ex)*/
  128. {
  129. return false;
  130. }
  131. }
  132. /// <summary>
  133. /// 接收指定数据库对象和sql查询语句的方法,返回datatable对象
  134. /// </summary>
  135. /// <param name="in_str_conn">指定数据库对象,比如SySSTDData.db</param>
  136. /// <param name="in_str_sql">传入的SQL查询语句</param>
  137. /// <returns></returns>
  138. public DataTable GetDTFormSysSTDByDBNameAndSQLString(string in_str_conn,string in_str_sql)
  139. {
  140. try
  141. {
  142. m_dbConnection = new SQLiteConnection("data source='" + m_STDDBPath + "\\" + in_str_conn + "'");
  143. m_dbConnection.Open();
  144. }
  145. catch (Exception ee)
  146. {
  147. string str = ee.ToString();
  148. }
  149. DataTable ret_dt = new DataTable();
  150. try
  151. {
  152. m_dataAdapter = new SQLiteDataAdapter(in_str_sql, m_dbConnection);
  153. DataSet ds = new DataSet();
  154. m_dataAdapter.Fill(ds);
  155. ret_dt = ds.Tables[0];
  156. }
  157. catch (Exception ee)
  158. {
  159. string str = ee.ToString();
  160. }
  161. return ret_dt;
  162. }
  163. public bool AddSTDAndElementInfo(ArrayList SQLStringList)
  164. {
  165. SQLiteTransaction trans = m_dbConnection.BeginTransaction();
  166. try
  167. { //Sql语句
  168. SQLiteCommand sQLiteCommand = new SQLiteCommand();
  169. sQLiteCommand.Connection = m_dbConnection;
  170. sQLiteCommand.Transaction = trans;
  171. int result = 0;
  172. for (int n = 0; n < SQLStringList.Count; n++)
  173. {
  174. string strsql = SQLStringList[n].ToString();
  175. if (strsql.Trim().Length > 1)
  176. {
  177. sQLiteCommand.CommandText = strsql;
  178. result += sQLiteCommand.ExecuteNonQuery();
  179. }
  180. }
  181. trans.Commit();//提交事务
  182. return result > 0;
  183. }
  184. catch (Exception)
  185. {
  186. trans.Rollback();//回滚事务
  187. return false;
  188. }
  189. }
  190. public bool DelSTDInfo(ArrayList SQLStringList)
  191. {
  192. SQLiteTransaction trans = m_dbConnection.BeginTransaction();
  193. try
  194. { //Sql语句
  195. SQLiteCommand sQLiteCommand = new SQLiteCommand();
  196. sQLiteCommand.Connection = m_dbConnection;
  197. sQLiteCommand.Transaction = trans;
  198. int result = 0;
  199. for (int n = 0; n < SQLStringList.Count; n++)
  200. {
  201. string strsql = SQLStringList[n].ToString();
  202. if (strsql.Trim().Length > 1)
  203. {
  204. sQLiteCommand.CommandText = strsql;
  205. result += sQLiteCommand.ExecuteNonQuery();
  206. }
  207. }
  208. trans.Commit();//提交事务
  209. return result > 0;
  210. }
  211. catch (Exception)
  212. {
  213. trans.Rollback();//回滚事务
  214. return false;
  215. }
  216. }
  217. public void CloseDB()
  218. {
  219. m_dbConnection.Close();
  220. }
  221. #endregion
  222. }
  223. }