AccessDbLoader.cs 12KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Data.OleDb;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using System.Windows.Forms;
  9. using GWSocketClient.model;
  10. using GWSocketClient.util;
  11. using Newtonsoft.Json;
  12. namespace GWSocketClient.db
  13. {
  14. public class AccessDbLoader
  15. {
  16. private static AccessDbLoader INSTANCE = null;
  17. private DataTable dataTable = new DataTable();
  18. private OleDbDataAdapter dataAdapter;
  19. public const string IP_HIS = "ip_his";
  20. public const string SEND_HIS = "send_his";
  21. public const string CCID_HIS = "ccid_his";
  22. public const string ADDR_HIS = "addr_his";
  23. // private List<WvBean> wvBeans = new List<WvBean>();
  24. private Dictionary<string, string> ID_INFO = new Dictionary<string, string>();
  25. public static AccessDbLoader getInstance(string dbssPath = "")
  26. {
  27. return INSTANCE ?? (INSTANCE = new AccessDbLoader(dbssPath));
  28. }
  29. public DataTable getDataTable()
  30. {
  31. return dataTable;
  32. }
  33. public OleDbDataAdapter getDataAdapter()
  34. {
  35. return dataAdapter;
  36. }
  37. public Dictionary<string, string> getUserIdInfo()
  38. {
  39. return ID_INFO;
  40. }
  41. /* public string getWebViewJson()
  42. {
  43. return JsonConvert.SerializeObject(wvBeans);
  44. }*/
  45. private AccessDbLoader(string dbPath = "")
  46. {
  47. if (dbPath.Equals(""))
  48. {
  49. dbPath = Application.StartupPath + "/dbfile/ID_INFO.accdb;";
  50. }
  51. openConnection(dbPath);
  52. reloadAccessDb();
  53. }
  54. private static string strConnection = "Provider = Microsoft.ACE.OLEDB.12.0;Data Source = ";
  55. private OleDbConnection objConnection = null;
  56. private void openConnection(string dbPath)
  57. {
  58. strConnection += dbPath;
  59. objConnection = new OleDbConnection(strConnection);
  60. objConnection.Open();
  61. }
  62. public void closeConnection()
  63. {
  64. objConnection.Close();
  65. }
  66. public AccessDbLoader reloadAccessDb(string sql = @"select * from fw")
  67. {
  68. Console.WriteLine(sql);
  69. try
  70. {
  71. // OleDbCommand sqlcmd = new OleDbCommand(@"select * from fw", objConnection);
  72. OleDbCommand sqlcmd = new OleDbCommand(sql, objConnection);
  73. dataAdapter = new OleDbDataAdapter(sqlcmd);
  74. dataTable.Clear();
  75. ID_INFO.Clear();
  76. // wvBeans.Clear();
  77. dataAdapter.Fill(dataTable);
  78. fillData(sqlcmd);
  79. }
  80. catch (OleDbException oe)
  81. {
  82. MessageBox.Show(oe.Message);
  83. }
  84. catch (Exception exception)
  85. {
  86. MyMessageBox.ShowMessageBox(exception.Message);
  87. }
  88. return this;
  89. }
  90. public AccessDbLoader findDataByType(int mType, string query)
  91. {
  92. /*
  93. ID - 10进制
  94. ID - 16进制
  95. 名字 - IDInfo
  96. 描述 - Desp
  97. */
  98. string sql = "select * from fw ";
  99. switch (mType)
  100. {
  101. case 0:
  102. sql += " where my_index = " + query;
  103. break;
  104. case 1:
  105. sql += " where MY_ID = '" + query + "'";
  106. break;
  107. case 2:
  108. sql += " where idInfo like '%" + query + "%'";
  109. break;
  110. case 3:
  111. sql += " where desp like '%" + query + "%'";
  112. break;
  113. default:
  114. return reloadAccessDb();
  115. }
  116. return reloadAccessDb(sql);
  117. }
  118. private void fillData(OleDbCommand sqlcmd)
  119. {
  120. using (OleDbDataReader reader = sqlcmd.ExecuteReader())
  121. {
  122. while (reader.Read()) //这个read调用很重要!不写的话运行时将提示找不到数据
  123. {
  124. WvBean wb = new WvBean();
  125. int id = 0;
  126. int index = 0;
  127. string myId = "";
  128. string idInfo = "";
  129. string len = "";
  130. string mode = "";
  131. string desp = "";
  132. string defalutValue = "";
  133. string userValue = "";
  134. string remark = "";
  135. /*try
  136. {*/
  137. id = reader.GetInt32(0);
  138. index = reader.GetInt32(1);
  139. myId = reader.GetString(2);
  140. idInfo = calcNull(reader.GetString(3));
  141. len = calcNull(reader.GetString(4));
  142. mode = calcNull(reader.GetString(5));
  143. desp = calcNull(reader.GetString(6));
  144. defalutValue = calcNull(reader.GetString(7));
  145. userValue = calcNull(reader.GetString(8));
  146. remark = calcNull(reader.GetString(9));
  147. /* }
  148. catch (Exception exception)
  149. {
  150. }*/
  151. wb.id = id;
  152. wb.index = index;
  153. wb.myId = myId;
  154. wb.idInfo = idInfo;
  155. wb.len = len;
  156. wb.mode = mode;
  157. wb.desp = desp;
  158. wb.defalutValue = defalutValue;
  159. wb.userValue = userValue;
  160. wb.remark = remark;
  161. ID_INFO.Add(myId, userValue);
  162. // wvBeans.Add(wb);
  163. }
  164. }
  165. }
  166. public int insert2Db(WvBean wb)
  167. {
  168. try
  169. {
  170. string sql =
  171. "INSERT INTO fw(my_index,MY_ID,idInfo,len,mode,desp,default_value,user_value,remark) VALUES(";
  172. sql += wb.index + ",";
  173. sql += "'" + wb.myId + "',";
  174. sql += "'" + wb.idInfo + "',";
  175. sql += "'" + wb.len + "',";
  176. sql += "'" + wb.mode + "',";
  177. sql += "'" + wb.desp + "',";
  178. sql += "'" + wb.defalutValue + "',";
  179. sql += "'" + wb.userValue + "',";
  180. sql += "'" + wb.remark + "')";
  181. // Console.WriteLine(sql);
  182. OleDbCommand inst = new OleDbCommand(sql, objConnection);
  183. return inst.ExecuteNonQuery();
  184. }
  185. catch (Exception e)
  186. {
  187. Console.WriteLine(e);
  188. }
  189. Console.WriteLine(wb.ToString());
  190. return -1;
  191. }
  192. public int delete4Db(int id)
  193. {
  194. string sql = "delete from fw where ID=" + id;
  195. OleDbCommand inst = new OleDbCommand(sql, objConnection);
  196. return inst.ExecuteNonQuery();
  197. }
  198. public int update2Db(WvBean wb)
  199. {
  200. /*string sql = "update fw set index=" + wb.index + ", MY_ID='" + wb.myId + "',idInfo='" + wb.idInfo +
  201. "',len='" + wb.len +
  202. "',mode='" +
  203. wb.mode + "',desp='" + wb.desp + "',default_value='" + wb.defalutValue + "',user_value='" +
  204. wb.userValue + "',remark='" + wb.remark + "' where ID=" + wb.id;*/
  205. string sql = "update fw set my_index=" + wb.index + ",MY_ID=\"" + wb.myId + "\",idInfo=\"" + wb.idInfo +
  206. "\",len=\"" + wb.len +
  207. "\",mode=\"" +
  208. wb.mode + "\",desp=\"" + wb.desp + "\",default_value=\"" + wb.defalutValue +
  209. "\",user_value=\"" +
  210. wb.userValue + "\",remark=\"" + wb.remark + "\" where ID=" + wb.id;
  211. Console.WriteLine(sql);
  212. OleDbCommand inst = new OleDbCommand(sql, objConnection);
  213. return inst.ExecuteNonQuery();
  214. }
  215. public int resetUserData()
  216. {
  217. string sql = "update fw set user_value=default_value";
  218. Console.WriteLine(sql);
  219. OleDbCommand inst = new OleDbCommand(sql, objConnection);
  220. return inst.ExecuteNonQuery();
  221. }
  222. public int setReceiveData(string id, string value)
  223. {
  224. int idInt = Utils.hexToTen(id);
  225. string sql = "update fw set user_value=\"" + (value.Trim()) + "\" where my_index=" + idInt;
  226. Console.WriteLine(sql);
  227. OleDbCommand inst = new OleDbCommand(sql, objConnection);
  228. return inst.ExecuteNonQuery();
  229. }
  230. public int deleteAllData(string tableName = "fw")
  231. {
  232. string sql = "delete from "+ tableName;
  233. Console.WriteLine(sql);
  234. OleDbCommand inst = new OleDbCommand(sql, objConnection);
  235. return inst.ExecuteNonQuery();
  236. }
  237. private string calcNull(string ojb)
  238. {
  239. if (ojb.Trim().Equals("") || ojb == null)
  240. {
  241. return "";
  242. }
  243. return ojb;
  244. }
  245. public int getHistoryCount(string tableName)
  246. {
  247. string sql = "select COUNT(*),MIN(ID) from " + tableName;
  248. OleDbCommand inst = new OleDbCommand(sql, objConnection);
  249. int count = 0;
  250. int minId = 0;
  251. using (OleDbDataReader reader = inst.ExecuteReader())
  252. {
  253. reader.Read();
  254. count = reader.GetInt32(0);
  255. minId = reader.GetInt32(1);
  256. }
  257. if (count > 30)
  258. {
  259. sql = "delete from " + tableName + " where ID=" + minId;
  260. inst = new OleDbCommand(sql, objConnection);
  261. inst.ExecuteNonQuery();
  262. }
  263. return count;
  264. }
  265. public int addToHistory(string tableName, string his)
  266. {
  267. int rowCount = getHistoryCount(tableName);
  268. OleDbCommand inst = null;
  269. string sql = "INSERT INTO " + tableName + "(";
  270. if (tableName.Equals(IP_HIS))
  271. {
  272. sql += "ip) VALUES('" + his + "')";
  273. Console.WriteLine(sql);
  274. }
  275. else if (tableName.Equals(SEND_HIS))
  276. {
  277. sql += "s_data) VALUES('" + his + "')";
  278. Console.WriteLine(sql);
  279. }
  280. else if (tableName.Equals(CCID_HIS))
  281. {
  282. sql += "CCID) VALUES('" + his + "')";
  283. Console.WriteLine(sql);
  284. }
  285. inst = new OleDbCommand(sql, objConnection);
  286. return inst.ExecuteNonQuery();
  287. }
  288. public int deleteByID(string tablename, int id)
  289. {
  290. string sql = "delete from " + tablename + " where ID=" + id;
  291. OleDbCommand inst = new OleDbCommand(sql, objConnection);
  292. return inst.ExecuteNonQuery();
  293. }
  294. public List<HisBean> getInputHistory(string tname)
  295. {
  296. string sql = "select * from " + tname;
  297. OleDbCommand inst = new OleDbCommand(sql, objConnection);
  298. List<HisBean> hsiList = new List<HisBean>();
  299. using (OleDbDataReader reader = inst.ExecuteReader())
  300. {
  301. while (reader.Read())
  302. {
  303. HisBean hb = new HisBean();
  304. hb.ID = reader.GetInt32(0);
  305. hb.data = reader.GetString(1);
  306. hsiList.Add(hb);
  307. }
  308. }
  309. return hsiList;
  310. }
  311. }
  312. }