SQLiteModel.cs 73 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Data;
  5. using System.Data.Common;
  6. using System.Data.SQLite;
  7. namespace WpfTest1.SQLite
  8. {
  9. public class SQLiteModel
  10. {
  11. public static string dbPath = Toolkits.Constants.dbPath;
  12. #region 各类建表操作
  13. //Patient表的创建
  14. //Patient表的创建
  15. public static void CreatePatientTable()
  16. {
  17. //如果不存在改数据库文件,则创建该数据库文件
  18. if (!System.IO.File.Exists(dbPath))
  19. {
  20. SQLiteHelper.CreateDB(dbPath);
  21. //Console.WriteLine("OK");
  22. }
  23. SQLiteHelper db = new SQLiteHelper(dbPath);
  24. string sql = @"CREATE TABLE Patient(
  25. id integer primary key autoincrement not null,
  26. record_id varchar(100),
  27. idNum varchar(20),
  28. name varchar(20),
  29. height float,
  30. weight float,
  31. base_heartrate integer,
  32. pregnancy_times integer,
  33. birth_times integer,
  34. pregnancy_date Date,
  35. mobile varchar(20),
  36. profession varchar(40),
  37. address varchar(140),
  38. category varchar(40),
  39. group_1 varchar(40),
  40. firstLetterPY varchar(10),
  41. description varchar(200),
  42. lastRecordDate datetime,
  43. delete_flag boolean
  44. )";
  45. db.ExecuteNonQuery(sql, null);
  46. string sql_1 = "CREATE INDEX Patient_idNum on Patient(idNum)";
  47. db.ExecuteNonQuery(sql_1, null);
  48. }
  49. //创建记录表
  50. public static void CreateRecordTable()
  51. {
  52. //如果不存在改数据库文件,则创建该数据库文件
  53. if (!System.IO.File.Exists(dbPath))
  54. {
  55. SQLiteHelper.CreateDB(dbPath);
  56. }
  57. SQLiteHelper db = new SQLiteHelper(dbPath);
  58. string sql = @"CREATE TABLE Record(
  59. id integer primary key autoincrement not null ,
  60. patientId integer,
  61. recordTime datetime ,
  62. dataLeft blob,
  63. dataRight blob,
  64. dataWrist blob,
  65. topBP integer,
  66. bottomBP integer,
  67. heartRate integer,
  68. eigenValueSaved integer ,
  69. comments varchar(200)
  70. )";
  71. db.ExecuteNonQuery(sql, null);
  72. }
  73. //创建医生表
  74. public static void CreateDoctorTable()
  75. {
  76. //如果不存在改数据库文件,则创建该数据库文件
  77. if (!System.IO.File.Exists(dbPath))
  78. {
  79. SQLiteHelper.CreateDB(dbPath);
  80. }
  81. SQLiteHelper db = new SQLiteHelper(dbPath);
  82. string sql = @"CREATE TABLE Doctor(
  83. id integer primary key autoincrement not null ,
  84. name varchar(20),
  85. pwd_hash varchar(32),
  86. phone_number varchar(20),
  87. director_flag boolean,
  88. delete_flag boolean)";
  89. db.ExecuteNonQuery(sql, null);
  90. }
  91. //创建CommonWords表
  92. public static void CreateCommonWordsTable()
  93. {
  94. //如果不存在改数据库文件,则创建该数据库文件
  95. if (!System.IO.File.Exists(dbPath))
  96. {
  97. SQLiteHelper.CreateDB(dbPath);
  98. }
  99. SQLiteHelper db = new SQLiteHelper(dbPath);
  100. string sql = @"CREATE TABLE CommonWords(
  101. id integer primary key autoincrement not null ,
  102. content varchar(200),
  103. describe varchar(20))";
  104. db.ExecuteNonQuery(sql, null);
  105. }
  106. //创建表达式表
  107. public static void CreateExpressionTable()
  108. {
  109. //如果不存在改数据库文件,则创建该数据库文件
  110. if (!System.IO.File.Exists(dbPath))
  111. {
  112. SQLiteHelper.CreateDB(dbPath);
  113. }
  114. SQLiteHelper db = new SQLiteHelper(dbPath);
  115. string sql = @"CREATE TABLE Expression(
  116. id integer primary key autoincrement not null ,
  117. expression_content varchar(500),
  118. expression_description varchar(500)
  119. )";
  120. db.ExecuteNonQuery(sql, null);
  121. }
  122. //创建配置表
  123. public static void CreateConfigTable()
  124. {
  125. //如果不存在改数据库文件,则创建该数据库文件
  126. if (!System.IO.File.Exists(dbPath))
  127. {
  128. SQLiteHelper.CreateDB(dbPath);
  129. }
  130. SQLiteHelper db = new SQLiteHelper(dbPath);
  131. string sql = @"CREATE TABLE Config(
  132. key varchar(100) primary key not null ,
  133. value varchar(500)
  134. )";
  135. db.ExecuteNonQuery(sql, null);
  136. }
  137. #endregion
  138. #region 数据库整体操作
  139. /// <summary>
  140. /// optmizeDatabase:从数据库中清空空闲列表
  141. /// </summary>
  142. public static int optmizeDatabase()
  143. {
  144. string sql = "vacuum";
  145. SQLiteHelper db = new SQLiteHelper(dbPath);
  146. SQLiteParameter[] parameters = new SQLiteParameter[] { };
  147. return db.ExecuteNonQuery(sql, parameters);
  148. }
  149. #endregion
  150. #region Patient表各类操作
  151. //Patient表的插入
  152. public static void InsertPatientData(string record_id,string idNum,string name, double height, double weight,int base_heartrate,int pregnancy_times,int birth_times,DateTime pregnancy_date,string mobile,string profession,string address,string category,string group_1, string firstLetterPY,string description,DateTime lastRecordDate,Boolean delete_flag, DateTime birth_date)
  153. {
  154. string sql = "INSERT INTO Patient(record_id,idNum,name,height,weight,base_heartrate,pregnancy_times,birth_times,pregnancy_date,mobile,profession,address,category,group_1,firstLetterPY,description,lastRecordDate,delete_flag,birth_date)values(@record_id,@idNum,@name,@height,@weight,@base_heartrate,@pregnancy_times,@birth_times,@pregnancy_date,@mobile,@profession,@address,@category,@group_1,@firstLetterPY,@description,@lastRecordDate,@delete_flag,@birth_date)";
  155. SQLiteHelper db = new SQLiteHelper(dbPath);
  156. SQLiteParameter[] parameters = new SQLiteParameter[]{
  157. new SQLiteParameter("@record_id",record_id),
  158. new SQLiteParameter("@idNum",idNum),
  159. new SQLiteParameter("@name",name),
  160. new SQLiteParameter("@height",height),
  161. new SQLiteParameter("@weight",weight),
  162. new SQLiteParameter("@base_heartrate",base_heartrate),
  163. new SQLiteParameter("@pregnancy_times",pregnancy_times),
  164. new SQLiteParameter("@birth_times",birth_times),
  165. new SQLiteParameter("@pregnancy_date",pregnancy_date),
  166. new SQLiteParameter("@mobile",mobile),
  167. new SQLiteParameter("@profession",profession),
  168. new SQLiteParameter("@address",address),
  169. new SQLiteParameter("@category",category),
  170. new SQLiteParameter("@group_1",group_1),
  171. new SQLiteParameter("@firstLetterPY",firstLetterPY),
  172. new SQLiteParameter("@description",description),
  173. new SQLiteParameter("@lastRecordDate",lastRecordDate),
  174. new SQLiteParameter("@delete_flag",delete_flag),
  175. new SQLiteParameter("@birth_date",birth_date)
  176. };
  177. db.ExecuteNonQuery(sql, parameters);
  178. }
  179. //Patient表的插入 返回自增主键
  180. public static int InsertPatientAndReturnID(string record_id, string idNum, string name, double height, double weight, int base_heartrate, int pregnancy_times, int birth_times, DateTime pregnancy_date, string mobile, string profession, string address, string category, string group_1, string firstLetterPY, string description, DateTime lastRecordDate, Boolean delete_flag, DateTime birth_date)
  181. {
  182. string sql = "INSERT INTO Patient(record_id,idNum,name,height,weight,base_heartrate,pregnancy_times,birth_times,pregnancy_date,mobile,profession,address,category,group_1,firstLetterPY,description,lastRecordDate,delete_flag,birth_date)values(@record_id,@idNum,@name,@height,@weight,@base_heartrate,@pregnancy_times,@birth_times,@pregnancy_date,@mobile,@profession,@address,@category,@group_1,@firstLetterPY,@description,@lastRecordDate,@delete_flag,@birth_date);";
  183. SQLiteHelper db = new SQLiteHelper(dbPath);
  184. SQLiteParameter[] parameters = new SQLiteParameter[]{
  185. new SQLiteParameter("@record_id",record_id),
  186. new SQLiteParameter("@idNum",idNum),
  187. new SQLiteParameter("@name",name),
  188. new SQLiteParameter("@height",height),
  189. new SQLiteParameter("@weight",weight),
  190. new SQLiteParameter("@base_heartrate",base_heartrate),
  191. new SQLiteParameter("@pregnancy_times",pregnancy_times),
  192. new SQLiteParameter("@birth_times",birth_times),
  193. new SQLiteParameter("@pregnancy_date",pregnancy_date),
  194. new SQLiteParameter("@mobile",mobile),
  195. new SQLiteParameter("@profession",profession),
  196. new SQLiteParameter("@address",address),
  197. new SQLiteParameter("@category",category),
  198. new SQLiteParameter("@group_1",group_1),
  199. new SQLiteParameter("@firstLetterPY",firstLetterPY),
  200. new SQLiteParameter("@description",description),
  201. new SQLiteParameter("@lastRecordDate",lastRecordDate),
  202. new SQLiteParameter("@delete_flag",delete_flag),
  203. new SQLiteParameter("@birth_date",birth_date)
  204. };
  205. db.ExecuteNonQuery(sql, parameters);
  206. //Console.WriteLine(db.ExecuteScalar("select last_insert_rowid() from Patient",null).ToString());
  207. //int new_id = Int32.Parse(db.ExecuteScalar("select id from Patient order by id desc", parameters).ToString());
  208. int new_id = Convert.ToInt32(db.ExecuteFindNewID("select max(id) from Patient;"));
  209. //int new_id = Convert.ToInt32(db.ExecuteFindNewID("select last_insert_rowid(id) from Patient;"));
  210. //Console.WriteLine(new_id);
  211. //return (Int32)db.ExecuteScalar("select last_insert_rowid();", new SQLiteParameter[] { });
  212. return new_id;
  213. }
  214. //Patient表的更新 不更新生日
  215. public static void UpdatePatientData2(string id, string record_id, string idNum, string name, double height, double weight, int base_heartrate, int pregnancy_times, int birth_times, DateTime pregnancy_date, string mobile, string profession, string address, string category, string group_1, string firstLetterPY, string description, Boolean delete_flag)
  216. {
  217. //Boolean a = false;
  218. string sql = "UPDATE Patient SET record_id=@record_id,idNum=@idNum,name=@name,height=@height,weight=@weight,base_heartrate=@base_heartrate,pregnancy_times=@pregnancy_times,birth_times = @birth_times,pregnancy_date= @pregnancy_date, mobile = @mobile,profession=@profession,address=@address,category=@category,group_1=@group_1,firstLetterPY=@firstLetterPY,description=@description,delete_flag=@delete_flag WHERE id=@id";
  219. SQLiteHelper db = new SQLiteHelper(dbPath);
  220. SQLiteParameter[] parameters = new SQLiteParameter[]{
  221. new SQLiteParameter("@record_id",record_id),
  222. new SQLiteParameter("@idNum",idNum),
  223. new SQLiteParameter("@name",name),
  224. new SQLiteParameter("@height",height),
  225. new SQLiteParameter("@weight",weight),
  226. new SQLiteParameter("@base_heartrate",base_heartrate),
  227. new SQLiteParameter("@pregnancy_times",pregnancy_times),
  228. new SQLiteParameter("@birth_times",birth_times),
  229. new SQLiteParameter("@pregnancy_date",pregnancy_date),
  230. new SQLiteParameter("@mobile",mobile),
  231. new SQLiteParameter("@profession",profession),
  232. new SQLiteParameter("@address",address),
  233. new SQLiteParameter("@category",category),
  234. new SQLiteParameter("@group_1",group_1),
  235. new SQLiteParameter("@firstLetterPY",firstLetterPY),
  236. new SQLiteParameter("@description",description),
  237. new SQLiteParameter("@delete_flag",delete_flag),
  238. new SQLiteParameter("@id",id)
  239. };
  240. db.ExecuteNonQuery(sql, parameters);
  241. }
  242. //Patient表的更新
  243. public static void UpdatePatientData(string id,string record_id ,string idNum, string name, double height, double weight, int base_heartrate, int pregnancy_times, int birth_times,DateTime pregnancy_date, string mobile, string profession, string address, string category, string group_1, string firstLetterPY, string description, Boolean delete_flag, DateTime birth_date)
  244. {
  245. //Boolean a = false;
  246. string sql = "UPDATE Patient SET record_id=@record_id,idNum=@idNum,name=@name,height=@height,weight=@weight,base_heartrate=@base_heartrate,pregnancy_times=@pregnancy_times,birth_times = @birth_times,pregnancy_date= @pregnancy_date, mobile = @mobile,profession=@profession,address=@address,category=@category,group_1=@group_1,firstLetterPY=@firstLetterPY,description=@description,delete_flag=@delete_flag,birth_date=@birth_date WHERE id=@id";
  247. SQLiteHelper db = new SQLiteHelper(dbPath);
  248. SQLiteParameter[] parameters = new SQLiteParameter[]{
  249. new SQLiteParameter("@record_id",record_id),
  250. new SQLiteParameter("@idNum",idNum),
  251. new SQLiteParameter("@name",name),
  252. new SQLiteParameter("@height",height),
  253. new SQLiteParameter("@weight",weight),
  254. new SQLiteParameter("@base_heartrate",base_heartrate),
  255. new SQLiteParameter("@pregnancy_times",pregnancy_times),
  256. new SQLiteParameter("@birth_times",birth_times),
  257. new SQLiteParameter("@pregnancy_date",pregnancy_date),
  258. new SQLiteParameter("@mobile",mobile),
  259. new SQLiteParameter("@profession",profession),
  260. new SQLiteParameter("@address",address),
  261. new SQLiteParameter("@category",category),
  262. new SQLiteParameter("@group_1",group_1),
  263. new SQLiteParameter("@firstLetterPY",firstLetterPY),
  264. new SQLiteParameter("@description",description),
  265. new SQLiteParameter("@delete_flag",delete_flag),
  266. new SQLiteParameter("@birth_date",birth_date),
  267. new SQLiteParameter("@id",id)
  268. };
  269. db.ExecuteNonQuery(sql, parameters);
  270. }
  271. //Patient表的仅更新最后测量时间的方法
  272. public static void UpdatePatientDataWithLastMeasureDate(string id, DateTime lastRecordDate)
  273. {
  274. string sql = "UPDATE Patient SET lastRecordDate=@lastRecordDate WHERE id=@id";
  275. SQLiteHelper db = new SQLiteHelper(dbPath);
  276. SQLiteParameter[] parameters = new SQLiteParameter[]{
  277. new SQLiteParameter("@lastRecordDate",lastRecordDate),
  278. new SQLiteParameter("@id",id)
  279. };
  280. db.ExecuteNonQuery(sql, parameters);
  281. }
  282. //Patient表记录的删除
  283. public static int DeletePatientItem(string id)
  284. {
  285. string sql = "UPDATE Patient SET delete_flag=1 WHERE id=@id";
  286. SQLiteHelper db = new SQLiteHelper(dbPath);
  287. SQLiteParameter[] parameters = new SQLiteParameter[]{
  288. new SQLiteParameter("@id",id)
  289. };
  290. return db.ExecuteNonQuery(sql, parameters);
  291. }
  292. /// <summary>
  293. /// getDeletedPatients:从Patient表中获取所有已被标记为删除的数据的id
  294. /// </summary>
  295. public static List<string> getDeletedPatients()
  296. {
  297. string sql = "SELECT id FROM Patient WHERE delete_flag = 1";
  298. SQLiteHelper db = new SQLiteHelper(dbPath);
  299. SQLiteParameter[] parameters = new SQLiteParameter[] { };
  300. List<string> result = new List<string>();
  301. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  302. {
  303. while (reader.Read())
  304. {
  305. string id = reader.IsDBNull(0) ? "" : reader.GetString(0);
  306. result.Add(id);
  307. }
  308. }
  309. return result;
  310. }
  311. /// <summary>
  312. /// realDeleteRecords:从Patient表中真实删除记录
  313. /// </summary>
  314. public static int realDeleteRecords()
  315. {
  316. string sql = "DELETE from Patient WHERE delete_flag=1";
  317. SQLiteHelper db = new SQLiteHelper(dbPath);
  318. SQLiteParameter[] parameters = new SQLiteParameter[]{ };
  319. return db.ExecuteNonQuery(sql, parameters);
  320. }
  321. //检查Patient表是否重复,条件提供身份号和病例号(至少一个)重复返回true,否则返回false
  322. public static bool checkRepeatPatient(string idnum,string record_id)
  323. {
  324. string sql = "SELECT * FROM Patient WHERE (record_id = @record_id OR idNum = @idnum) AND delete_flag = 0";
  325. SQLiteHelper db = new SQLiteHelper(dbPath);
  326. SQLiteParameter[] parameters = new SQLiteParameter[]{
  327. new SQLiteParameter("@record_id",record_id),
  328. new SQLiteParameter("@idnum",idnum)
  329. };
  330. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  331. {
  332. while (reader.Read())
  333. {
  334. reader.Close();
  335. return true;
  336. }
  337. }
  338. return false;
  339. }
  340. //通过身份证号、孕次、产次查找Patient
  341. public static Patient getPatientByIdNum_pregnancy_brith(string idNum,int pregnancy_times, int birth_times)
  342. {
  343. string sql = "SELECT * FROM Patient WHERE idNUm = @idNum AND pregnancy_times = @pregnancy_times AND birth_times = @birth_times AND delete_flag = 0 LIMIT 1";
  344. SQLiteHelper db = new SQLiteHelper(dbPath);
  345. SQLiteParameter[] parameters = new SQLiteParameter[]{
  346. new SQLiteParameter("@idNum",idNum),
  347. new SQLiteParameter("@pregnancy_times",pregnancy_times),
  348. new SQLiteParameter("@birth_times",birth_times),
  349. };
  350. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  351. {
  352. while (reader.Read())
  353. {
  354. Patient temp = new Patient();
  355. temp.id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
  356. temp.record_id = reader.IsDBNull(1) ? "" : reader.GetString(1);
  357. temp.idNum = reader.IsDBNull(2) ? "" : reader.GetString(2);
  358. temp.name = reader.IsDBNull(3) ? "" : reader.GetString(3);
  359. temp.height = reader.IsDBNull(4) ? 0 : reader.GetDouble(4);
  360. temp.weight = reader.IsDBNull(5) ? 0 : reader.GetDouble(5);
  361. temp.base_heartrate = reader.IsDBNull(6) ? 0 : reader.GetInt32(6);
  362. temp.pregnancy_times = reader.IsDBNull(7) ? 0 :reader.GetInt32(7);
  363. temp.birth_times = reader.IsDBNull(8) ? 0 : reader.GetInt32(8);
  364. temp.pregnancy_date = reader.IsDBNull(9) ? DateTime.MinValue : reader.GetDateTime(9);
  365. temp.mobile = reader.IsDBNull(10)? "" : reader.GetString(10);
  366. temp.profession = reader.IsDBNull(11) ? "" : reader.GetString(11);
  367. temp.address = reader.IsDBNull(12) ? "" : reader.GetString(12);
  368. temp.category = reader.IsDBNull(13) ? "" : reader.GetString(13);
  369. temp.group_1 = reader.IsDBNull(14) ? "" : reader.GetString(14);
  370. temp.firstLetterPY = reader.IsDBNull(15) ? "" : reader.GetString(15);
  371. temp.description = reader.IsDBNull(16) ? "" : reader.GetString(16);
  372. return temp;
  373. }
  374. }
  375. return null;
  376. }
  377. //通过id主键查找Patient
  378. public static Patient getPatientById(string id)
  379. {
  380. string sql = "SELECT * FROM Patient WHERE id = @id AND delete_flag = 0 LIMIT 1";
  381. SQLiteHelper db = new SQLiteHelper(dbPath);
  382. SQLiteParameter[] parameters = new SQLiteParameter[]{
  383. new SQLiteParameter("@id",id),
  384. };
  385. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  386. {
  387. while (reader.Read())
  388. {
  389. Patient temp = new Patient();
  390. temp.id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
  391. temp.record_id = reader.IsDBNull(1) ? "" : reader.GetString(1);
  392. temp.idNum = reader.IsDBNull(2) ? "" : reader.GetString(2);
  393. temp.name = reader.IsDBNull(3) ? "" : reader.GetString(3);
  394. temp.height = reader.IsDBNull(4) ? 0 : reader.GetDouble(4);
  395. temp.weight = reader.IsDBNull(5) ? 0 : reader.GetDouble(5);
  396. temp.base_heartrate = reader.IsDBNull(6) ? 0 : reader.GetInt32(6);
  397. temp.pregnancy_times = reader.IsDBNull(7) ? 0 : reader.GetInt32(7);
  398. temp.birth_times = reader.IsDBNull(8) ? 0 : reader.GetInt32(8);
  399. temp.pregnancy_date = reader.IsDBNull(9) ? DateTime.MinValue : reader.GetDateTime(9);
  400. temp.mobile = reader.IsDBNull(10) ? "" : reader.GetString(10);
  401. temp.profession = reader.IsDBNull(11) ? "" : reader.GetString(11);
  402. temp.address = reader.IsDBNull(12) ? "" : reader.GetString(12);
  403. temp.category = reader.IsDBNull(13) ? "" : reader.GetString(13);
  404. temp.group_1 = reader.IsDBNull(14) ? "" : reader.GetString(14);
  405. temp.firstLetterPY = reader.IsDBNull(15) ? "" : reader.GetString(15);
  406. temp.description = reader.IsDBNull(16) ? "" : reader.GetString(16);
  407. return temp;
  408. }
  409. }
  410. return null;
  411. }
  412. //根据拼音获取patient记录
  413. public static void getPatientByPY(string py)
  414. {
  415. //查询从20条起的50条记录
  416. string sql = "SELECT * FROM Patient WHERE firstLetterPY like\'%" + py + "%\' AND delete_flag=0";
  417. SQLiteHelper db = new SQLiteHelper(dbPath);
  418. using (SQLiteDataReader reader = db.ExecuteReader(sql, null))
  419. {
  420. while (reader.Read())
  421. {
  422. Console.WriteLine("姓名:{0},职业:{1}", reader.GetString(2), reader.GetString(9));
  423. }
  424. }
  425. }
  426. //根据姓名获取patient记录
  427. public static void getPatientByName(string name)
  428. {
  429. string sql = "SELECT * FROM Patient WHERE name like\'%" + name+ "%\' AND delete_flag=0";
  430. Console.WriteLine(sql);
  431. SQLiteHelper db = new SQLiteHelper(dbPath);
  432. using (SQLiteDataReader reader = db.ExecuteReader(sql, null))
  433. {
  434. while (reader.Read())
  435. {
  436. //Console.WriteLine("DDDDDDDDDDDDDDDDDDDD");
  437. Console.WriteLine("姓名:{0},职业:{1}", reader.GetString(2), reader.GetString(9));
  438. }
  439. }
  440. }
  441. //根据condition获取patient记录
  442. public static DataView getPatientByCondition(string condition)
  443. {
  444. /*
  445. *
  446. string sql = "SELECT * FROM Patient WHERE delete_flag=0 " + condition;
  447. Console.WriteLine(sql);
  448. SQLiteHelper db = new SQLiteHelper(dbPath);
  449. using (SQLiteDataReader reader = db.ExecuteReader(sql, null))
  450. {
  451. return reader;
  452. while (reader.Read())
  453. {
  454. //Console.WriteLine("DDDDDDDDDDDDDDDDDDDD");
  455. Console.WriteLine("姓名:{0},职业:{1}", reader.GetString(2), reader.GetString(9));
  456. }
  457. }
  458. */
  459. //var path1 = "d:\\temp\\temp.db";
  460. string sql = "SELECT * FROM Patient WHERE delete_flag=0 " + condition;
  461. System.Data.SQLite.SQLiteConnectionStringBuilder connstr = new System.Data.SQLite.SQLiteConnectionStringBuilder();
  462. connstr.DataSource = dbPath;
  463. System.Data.SQLite.SQLiteConnection conn = new System.Data.SQLite.SQLiteConnection();
  464. conn.ConnectionString = connstr.ToString();
  465. conn.Open();
  466. SQLiteDataAdapter adapter = new SQLiteDataAdapter(sql, conn);
  467. DataSet ds = new DataSet();
  468. adapter.Fill(ds);
  469. DataView dv = ds.Tables[0].DefaultView;
  470. conn.Close();
  471. conn.Dispose();
  472. return dv;
  473. }
  474. //获取Patient表的用户所有分类和所有用户组
  475. public static List<string> getCategory(string taskType="category")
  476. {
  477. string sql = "SELECT " + taskType + " FROM Patient WHERE delete_flag = 0 group by " + taskType;
  478. List<string> result = new List<string>();
  479. SQLiteHelper db = new SQLiteHelper(dbPath);
  480. SQLiteParameter[] parameters = new SQLiteParameter[]{ };
  481. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  482. {
  483. while (reader.Read())
  484. {
  485. if (reader.IsDBNull(0))
  486. continue;
  487. result.Add(reader.GetString(0));
  488. }
  489. reader.Close();
  490. }
  491. return result;
  492. }
  493. #endregion
  494. #region doctor表相关的操作
  495. //医生登录操作
  496. public static doctor doctorLogin(string name,string passwordHash)
  497. {
  498. string sql = "SELECT * FROM Doctor WHERE name = @name and pwd_hash=@passwordHash and delete_flag =0 LIMIT 1";
  499. SQLiteHelper db = new SQLiteHelper(dbPath);
  500. SQLiteParameter[] parameters = new SQLiteParameter[]{
  501. new SQLiteParameter("@name",name),
  502. new SQLiteParameter("@passwordHash",passwordHash),
  503. };
  504. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  505. {
  506. while (reader.Read())
  507. {
  508. doctor oneDoctor = new doctor();
  509. oneDoctor.id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
  510. oneDoctor.name = name;
  511. oneDoctor.phone_number = reader.IsDBNull(3) ? "" : reader.GetString(3);
  512. oneDoctor.director_flag = reader.IsDBNull(4) ? 0 : reader.GetInt32(4);
  513. oneDoctor.privilege_flag = reader.IsDBNull(6) ? -1 : reader.GetInt32(6);
  514. return oneDoctor;
  515. }
  516. }
  517. return null;
  518. }
  519. //主任登录操作
  520. public static doctor directorLogin(string name, string passwordHash)
  521. {
  522. string sql = "SELECT * FROM Doctor WHERE name = @name and pwd_hash=@passwordHash and delete_flag = 0 and director_flag = 1 LIMIT 1";
  523. SQLiteHelper db = new SQLiteHelper(dbPath);
  524. SQLiteParameter[] parameters = new SQLiteParameter[]{
  525. new SQLiteParameter("@name",name),
  526. new SQLiteParameter("@passwordHash",passwordHash),
  527. };
  528. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  529. {
  530. while (reader.Read())
  531. {
  532. doctor oneDoctor = new doctor();
  533. oneDoctor.id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
  534. oneDoctor.name = name;
  535. oneDoctor.phone_number = reader.IsDBNull(3) ? "" : reader.GetString(3);
  536. oneDoctor.director_flag = reader.IsDBNull(4) ? 0 : reader.GetInt32(4);
  537. return oneDoctor;
  538. }
  539. }
  540. return null;
  541. }
  542. //厂商登录操作
  543. public static doctor OEMLogin(string name, string passwordHash)
  544. {
  545. string sql = "SELECT * FROM Doctor WHERE name = @name and pwd_hash=@passwordHash and delete_flag = 0 and privilege_flag = 1 LIMIT 1";
  546. SQLiteHelper db = new SQLiteHelper(dbPath);
  547. SQLiteParameter[] parameters = new SQLiteParameter[]{
  548. new SQLiteParameter("@name",name),
  549. new SQLiteParameter("@passwordHash",passwordHash),
  550. };
  551. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  552. {
  553. while (reader.Read())
  554. {
  555. doctor oneDoctor = new doctor();
  556. oneDoctor.id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
  557. oneDoctor.name = name;
  558. oneDoctor.phone_number = reader.IsDBNull(3) ? "" : reader.GetString(3);
  559. oneDoctor.director_flag = reader.IsDBNull(4) ? 0 : reader.GetInt32(4);
  560. return oneDoctor;
  561. }
  562. }
  563. return null;
  564. }
  565. //查询医生用户名是否存在 存在返回true
  566. public static bool checkRepeatDoctor(string name)
  567. {
  568. string sql = "SELECT * FROM Doctor WHERE name = @name AND delete_flag = 0";
  569. SQLiteHelper db = new SQLiteHelper(dbPath);
  570. SQLiteParameter[] parameters = new SQLiteParameter[]{
  571. new SQLiteParameter("@name",name)
  572. };
  573. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  574. {
  575. while (reader.Read())
  576. {
  577. reader.Close();
  578. return true;
  579. }
  580. }
  581. return false;
  582. }
  583. //通过id主键查找Doctor
  584. public static doctor getDoctorById(string id)
  585. {
  586. string sql = "SELECT * FROM Doctor WHERE id = @id AND delete_flag = 0 LIMIT 1";
  587. SQLiteHelper db = new SQLiteHelper(dbPath);
  588. SQLiteParameter[] parameters = new SQLiteParameter[]{
  589. new SQLiteParameter("@id",id),
  590. };
  591. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  592. {
  593. while (reader.Read())
  594. {
  595. doctor temp = new doctor();
  596. temp.id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
  597. temp.name = reader.IsDBNull(1) ? "" : reader.GetString(1);
  598. temp.pwd_hash = reader.IsDBNull(2) ? "" : reader.GetString(2);
  599. temp.phone_number = reader.IsDBNull(3) ? "" : reader.GetString(3);
  600. temp.director_flag = reader.IsDBNull(4) ? 0 : reader.GetInt32(4);
  601. return temp;
  602. }
  603. }
  604. return null;
  605. }
  606. //查找Doctor 返回目前还使用的医生id
  607. public static int getDoctorIdByNoDelete()
  608. {
  609. string sql = "SELECT * FROM Doctor WHERE delete_flag = 0 LIMIT 1";
  610. SQLiteHelper db = new SQLiteHelper(dbPath);
  611. SQLiteParameter[] parameters = new SQLiteParameter[]{};
  612. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  613. {
  614. while (reader.Read())
  615. {
  616. doctor temp = new doctor();
  617. temp.id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
  618. temp.name = reader.IsDBNull(1) ? "" : reader.GetString(1);
  619. temp.pwd_hash = reader.IsDBNull(2) ? "" : reader.GetString(2);
  620. temp.phone_number = reader.IsDBNull(3) ? "" : reader.GetString(3);
  621. temp.director_flag = reader.IsDBNull(4) ? 0 : reader.GetInt32(4);
  622. return temp.id;
  623. }
  624. }
  625. return -1;
  626. }
  627. //Doctort表的插入
  628. public static void InsertDoctorData(string name, string pwd_hash, string phone_number, Boolean director_flag = false, Boolean delete_flag = false)
  629. {
  630. string sql = "INSERT INTO Doctor(name,pwd_hash,phone_number,director_flag,delete_flag)values(@name,@pwd_hash,@phone_number,@director_flag,@delete_flag)";
  631. SQLiteHelper db = new SQLiteHelper(dbPath);
  632. SQLiteParameter[] parameters = new SQLiteParameter[]{
  633. new SQLiteParameter("@name",name),
  634. new SQLiteParameter("@pwd_hash",pwd_hash),
  635. new SQLiteParameter("@phone_number",phone_number),
  636. new SQLiteParameter("@director_flag",director_flag),
  637. new SQLiteParameter("@delete_flag",delete_flag)
  638. };
  639. db.ExecuteNonQuery(sql, parameters);
  640. }
  641. //Doctor表的更新
  642. public static void UpdateDoctorData(string id, string name, string pwd_hash, string phone_number, Boolean director_flag = false, Boolean delete_flag = false)
  643. {
  644. //Boolean a = false;
  645. string sql = "UPDATE Doctor SET name=@name,pwd_hash=@pwd_hash,phone_number=@phone_number,director_flag=@director_flag,delete_flag=@delete_flag WHERE id=@id";
  646. SQLiteHelper db = new SQLiteHelper(dbPath);
  647. SQLiteParameter[] parameters = new SQLiteParameter[]{
  648. new SQLiteParameter("@name",name),
  649. new SQLiteParameter("@pwd_hash",pwd_hash),
  650. new SQLiteParameter("@phone_number",phone_number),
  651. new SQLiteParameter("@director_flag",director_flag),
  652. new SQLiteParameter("@delete_flag",delete_flag),
  653. new SQLiteParameter("@id",id)
  654. };
  655. db.ExecuteNonQuery(sql, parameters);
  656. }
  657. //Doctor表记录的删除
  658. public static int DeleteDoctorItem(string id)
  659. {
  660. string sql = "UPDATE Doctor SET delete_flag=1 WHERE id=@id";
  661. SQLiteHelper db = new SQLiteHelper(dbPath);
  662. SQLiteParameter[] parameters = new SQLiteParameter[]{
  663. new SQLiteParameter("@id",id)
  664. };
  665. return db.ExecuteNonQuery(sql, parameters);
  666. }
  667. #endregion
  668. #region 常用语CommonWords表操作
  669. //通过id主键查找CommonWords
  670. public static CommonWords getCommonWordsById(string id)
  671. {
  672. string sql = "SELECT * FROM CommonWords WHERE id = @id LIMIT 1";
  673. SQLiteHelper db = new SQLiteHelper(dbPath);
  674. SQLiteParameter[] parameters = new SQLiteParameter[]{
  675. new SQLiteParameter("@id",id),
  676. };
  677. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  678. {
  679. while (reader.Read())
  680. {
  681. CommonWords temp = new CommonWords();
  682. temp.id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
  683. temp.content = reader.IsDBNull(1) ? "" : reader.GetString(1);
  684. temp.describe = reader.IsDBNull(2) ? "" : reader.GetString(2);
  685. return temp;
  686. }
  687. }
  688. return null;
  689. }
  690. //CommonWords表的插入
  691. public static void InsertCommonWordsData(string content, string describe)
  692. {
  693. string sql = "INSERT INTO CommonWords(content,describe)values(@content,@describe)";
  694. SQLiteHelper db = new SQLiteHelper(dbPath);
  695. SQLiteParameter[] parameters = new SQLiteParameter[]{
  696. new SQLiteParameter("@content",content),
  697. new SQLiteParameter("@describe",describe)
  698. };
  699. db.ExecuteNonQuery(sql, parameters);
  700. }
  701. //CommonWords表的更新
  702. public static void UpdateCommonWordsData(string id, string content, string describe)
  703. {
  704. //Boolean a = false;
  705. string sql = "UPDATE CommonWords SET content=@content,describe=@describe WHERE id=@id";
  706. SQLiteHelper db = new SQLiteHelper(dbPath);
  707. SQLiteParameter[] parameters = new SQLiteParameter[]{
  708. new SQLiteParameter("@content",content),
  709. new SQLiteParameter("@describe",describe),
  710. new SQLiteParameter("@id",id)
  711. };
  712. db.ExecuteNonQuery(sql, parameters);
  713. }
  714. //CommonWords表记录的删除
  715. public static int DeleteCommonWordsItem(string id)
  716. {
  717. string sql = "DELETE FROM CommonWords WHERE id=@id";
  718. SQLiteHelper db = new SQLiteHelper(dbPath);
  719. SQLiteParameter[] parameters = new SQLiteParameter[]{
  720. new SQLiteParameter("@id",id)
  721. };
  722. return db.ExecuteNonQuery(sql, parameters);
  723. }
  724. #endregion
  725. #region Record标的相关操作
  726. // //通过id主键查找Record
  727. public static Record getRecordById(string id)
  728. {
  729. string sql = "SELECT * FROM Record WHERE id = @id LIMIT 1";
  730. SQLiteHelper db = new SQLiteHelper(dbPath);
  731. SQLiteParameter[] parameters = new SQLiteParameter[]{
  732. new SQLiteParameter("@id",id),
  733. };
  734. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  735. {
  736. while (reader.Read())
  737. {
  738. Record temp = new Record();
  739. //long len = reader.GetBytes(reader.GetOrdinal("Data"), 0, null, 0, 0);
  740. //Console.WriteLine("len is :" + len.ToString());
  741. //buffer = new byte[len];
  742. //len = reader.GetBytes(reader.GetOrdinal("Data"), 0, buffer, 0, (int)len);
  743. temp.id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
  744. temp.patientId = reader.IsDBNull(1) ? 0 : reader.GetInt32(1);
  745. temp.doctorId = reader.IsDBNull(2) ? 0 : reader.GetInt32(2);
  746. temp.recordTime = reader.IsDBNull(3) ? DateTime.MinValue : reader.GetDateTime(3);
  747. //左手
  748. if(!reader.IsDBNull(4))
  749. {
  750. long len = reader.GetBytes(reader.GetOrdinal("dataLeft"), 0, null, 0, 0);
  751. byte[] buffer = new byte[len];
  752. reader.GetBytes(reader.GetOrdinal("dataLeft"), 0, buffer, 0, (int)len);
  753. temp.dataLeft = buffer;
  754. }
  755. else
  756. {
  757. temp.dataLeft = new byte[] { };
  758. }
  759. //右手
  760. if (!reader.IsDBNull(5))
  761. {
  762. long len = reader.GetBytes(reader.GetOrdinal("dataRight"), 0, null, 0, 0);
  763. byte[] buffer = new byte[len];
  764. reader.GetBytes(reader.GetOrdinal("dataRight"), 0, buffer, 0, (int)len);
  765. temp.dataRight = buffer;
  766. }
  767. else
  768. {
  769. temp.dataRight = new byte[] { };
  770. }
  771. //绕关节
  772. if (!reader.IsDBNull(6))
  773. {
  774. long len = reader.GetBytes(reader.GetOrdinal("dataWrist"), 0, null, 0, 0);
  775. byte[] buffer = new byte[len];
  776. reader.GetBytes(reader.GetOrdinal("dataWrist"), 0, buffer, 0, (int)len);
  777. temp.dataWrist = buffer;
  778. }
  779. else
  780. {
  781. temp.dataWrist = new byte[] { };
  782. }
  783. temp.topBP = reader.IsDBNull(7) ? 0 : reader.GetDouble(7);
  784. temp.bottomBP = reader.IsDBNull(8) ? 0 : reader.GetDouble(8);
  785. temp.heartRate = reader.IsDBNull(9) ? 0 : reader.GetDouble(9);
  786. temp.waveTpye = reader.IsDBNull(10) ? "" : reader.GetString(10);
  787. temp.eigenValueSaved = reader.IsDBNull(11) ? 0: reader.GetInt32(11);
  788. temp.comments = reader.IsDBNull(12) ? "" : reader.GetString(12);
  789. temp.hand = reader.IsDBNull(14) ? "b" : reader.GetString(14);
  790. return temp;
  791. }
  792. }
  793. return null;
  794. }
  795. //查找Record中病人id和时间相同的记录个数
  796. public static int getRecordCountByPatientIdAndTime(int patient_id, DateTime recordTime)
  797. {
  798. string sql = "SELECT count(*) FROM Record WHERE patientId = @patient_id AND recordTime=@recordTime";
  799. SQLiteHelper db = new SQLiteHelper(dbPath);
  800. SQLiteParameter[] parameters = new SQLiteParameter[]{
  801. new SQLiteParameter("@patient_id",patient_id),
  802. new SQLiteParameter("@recordTime",recordTime),
  803. };
  804. int count = Convert.ToInt32(db.ExecuteFindCount(sql,parameters));
  805. return count;
  806. }
  807. //Record表的插入
  808. public static void InsertRecordData(int PatientId, int doctorId, DateTime RecordTime, byte[] DataLeft,byte[] DataRight, byte[] DataWrist, double TopBP, double BottomBP, double HeartRate, int EigenValueSaved, string Comments, string waveType, string hand)
  809. {
  810. string sql = "INSERT INTO Record(PatientId,doctorId,RecordTime,DataLeft,DataRight,DataWrist,TopBP,BottomBP,HeartRate,waveType,EigenValueSaved,Comments,hand)values(@PatientId,@doctorId,@RecordTime,@DataLeft,@DataRight,@DataWrist,@TopBP,@BottomBP,@HeartRate,@waveType,@EigenValueSaved,@Comments,@hand)";
  811. SQLiteHelper db = new SQLiteHelper(dbPath);
  812. SQLiteParameter[] parameters = new SQLiteParameter[]{
  813. new SQLiteParameter("@PatientId",PatientId),
  814. new SQLiteParameter("@doctorId",doctorId),
  815. new SQLiteParameter("@RecordTime",RecordTime),
  816. new SQLiteParameter("@DataLeft",DbType.Binary),
  817. new SQLiteParameter("@DataRight",DbType.Binary),
  818. new SQLiteParameter("@DataWrist",DbType.Binary),
  819. new SQLiteParameter("@TopBP",TopBP),
  820. new SQLiteParameter("@BottomBP",BottomBP),
  821. new SQLiteParameter("@HeartRate",HeartRate),
  822. new SQLiteParameter("@waveType",waveType),
  823. new SQLiteParameter("@EigenValueSaved",EigenValueSaved),
  824. new SQLiteParameter("@Comments",Comments),
  825. new SQLiteParameter("@hand",hand)
  826. };
  827. parameters[3].Value = DataLeft;
  828. parameters[4].Value = DataRight;
  829. parameters[5].Value = DataWrist;
  830. db.ExecuteNonQuery(sql, parameters);
  831. }
  832. ////Record表的更新
  833. public static void UpdateRecordData(int id,int PatientId, int doctorId, DateTime RecordTime, byte[] DataLeft, byte[] DataRight, byte[] DataWrist, double TopBP, double BottomBP, double HeartRate, int EigenValueSaved, string Comments, string waveType)
  834. {
  835. string sql = "UPDATE Record SET PatientId=@PatientId,doctorId=@doctorId,RecordTime=@RecordTime,DataLeft=@DataLeft,DataRight=@DataLeft,DataWrist=@DataWrist,TopBP=@TopBP,BottomBP=@BottomBP,HeartRate=@HeartRate,EigenValueSaved=@EigenValueSaved,comments=@Comments,waveType=@waveType WHERE id=@id";
  836. SQLiteHelper db = new SQLiteHelper(dbPath);
  837. SQLiteParameter[] parameters = new SQLiteParameter[]{
  838. new SQLiteParameter("@PatientId",PatientId),
  839. new SQLiteParameter("@doctorId",doctorId),
  840. new SQLiteParameter("@RecordTime",RecordTime),
  841. new SQLiteParameter("@DataLeft",DataLeft),
  842. new SQLiteParameter("@DataRight",DataRight),
  843. new SQLiteParameter("@DataWrist",DataWrist),
  844. new SQLiteParameter("@TopBP",TopBP),
  845. new SQLiteParameter("@BottomBP",BottomBP),
  846. new SQLiteParameter("@HeartRate",HeartRate),
  847. new SQLiteParameter("@EigenValueSaved",EigenValueSaved),
  848. new SQLiteParameter("@Comments",Comments),
  849. new SQLiteParameter("@id",id),
  850. new SQLiteParameter("@waveType",waveType)
  851. };
  852. db.ExecuteNonQuery(sql, parameters);
  853. }
  854. //Record表更新医生的诊断
  855. public static void UpdateDiagnosisData(int id, string Comments)
  856. {
  857. string sql = "UPDATE Record SET comments=@Comments WHERE id=@id";
  858. SQLiteHelper db = new SQLiteHelper(dbPath);
  859. SQLiteParameter[] parameters = new SQLiteParameter[]{
  860. new SQLiteParameter("@Comments",Comments),
  861. new SQLiteParameter("@id",id),
  862. };
  863. db.ExecuteNonQuery(sql, parameters);
  864. }
  865. //Record表删除操作
  866. public static int DeleteRecordItem(string id)
  867. {
  868. string sql = "DELETE FROM Record WHERE id=@id";
  869. SQLiteHelper db = new SQLiteHelper(dbPath);
  870. SQLiteParameter[] parameters = new SQLiteParameter[]{
  871. new SQLiteParameter("@id",id)
  872. };
  873. return db.ExecuteNonQuery(sql, parameters);
  874. }
  875. #endregion
  876. #region Expression表的相关操作
  877. //查找所有的expression的content和position列,privilege_flag为1时才显示所有的公示,否则只显示isCache=1的公式
  878. public static void GetAllExpressionContent(Dictionary<string, double> target, Dictionary<string, string> positions, int privilege_flag)
  879. {
  880. string sql = "SELECT expression_content,position FROM Expression WHERE ";
  881. if(privilege_flag == 1)
  882. {
  883. sql += "1";
  884. }
  885. else
  886. {
  887. sql += "isCache = 1";
  888. }
  889. SQLiteHelper db = new SQLiteHelper(dbPath);
  890. SQLiteParameter[] parameters = new SQLiteParameter[]{
  891. };
  892. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  893. {
  894. while (reader.Read())
  895. {
  896. string tempKey = reader.IsDBNull(0) ? "" : reader.GetString(0);
  897. string tempPosition = reader.IsDBNull(1) ? "" : reader.GetString(1);
  898. if (tempKey == "")
  899. {
  900. break;
  901. }
  902. //KeyValuePair<string, double> temp = new KeyValuePair<string, double>(tempKey,0);
  903. target.Add(tempKey,0);
  904. positions.Add(tempKey, tempPosition);
  905. }
  906. }
  907. }
  908. //通过id主键查找Expression
  909. public static Expression getExpressionById(string id)
  910. {
  911. string sql = "SELECT * FROM Expression WHERE id = @id LIMIT 1";
  912. SQLiteHelper db = new SQLiteHelper(dbPath);
  913. SQLiteParameter[] parameters = new SQLiteParameter[]{
  914. new SQLiteParameter("@id",id),
  915. };
  916. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  917. {
  918. while (reader.Read())
  919. {
  920. Expression temp = new Expression();
  921. temp.id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
  922. temp.expression_content = reader.IsDBNull(1) ? "" : reader.GetString(1);
  923. temp.expression_description = reader.IsDBNull(2) ? "" : reader.GetString(2);
  924. temp.range = reader.IsDBNull(3) ? 0.0 : reader.GetDouble(3);
  925. temp.isRelative = reader.IsDBNull(4) ? 0 : reader.GetInt32(4);
  926. temp.isCache = reader.IsDBNull(5) ? 0 : reader.GetInt32(5);
  927. temp.upBound = reader.IsDBNull(6) ? 0 : reader.GetDouble(6);
  928. temp.downBound = reader.IsDBNull(7) ? 0 : reader.GetDouble(7);
  929. temp.position = reader.IsDBNull(8) ? "o" : reader.GetString(8);
  930. return temp;
  931. }
  932. }
  933. return null;
  934. }
  935. //通过公式值查找Expression
  936. public static Expression getExpressionByContent(string content)
  937. {
  938. string sql = "SELECT * FROM Expression WHERE expression_content = @content LIMIT 1";
  939. SQLiteHelper db = new SQLiteHelper(dbPath);
  940. SQLiteParameter[] parameters = new SQLiteParameter[]{
  941. new SQLiteParameter("@content",content),
  942. };
  943. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  944. {
  945. while (reader.Read())
  946. {
  947. Expression temp = new Expression();
  948. temp.id = reader.IsDBNull(0) ? 0 : reader.GetInt32(0);
  949. temp.expression_content = reader.IsDBNull(1) ? "" : reader.GetString(1);
  950. temp.expression_description = reader.IsDBNull(2) ? "" : reader.GetString(2);
  951. temp.range = reader.IsDBNull(3) ? 0.0 : reader.GetDouble(3);
  952. temp.isRelative = reader.IsDBNull(4) ? 0 : reader.GetInt32(4);
  953. temp.isCache = reader.IsDBNull(5) ? 0 : reader.GetInt32(5);
  954. temp.upBound = reader.IsDBNull(6) ? 0 : reader.GetDouble(6);
  955. temp.downBound = reader.IsDBNull(7) ? 0 : reader.GetDouble(7);
  956. temp.position = reader.IsDBNull(8) ? "o" : reader.GetString(8);
  957. return temp;
  958. }
  959. }
  960. return null;
  961. }
  962. //Expression表的插入
  963. public static void InsertExpressionData(string content, string describe,double range, int relative,double upBound, double downBound, int isCache, string position)
  964. {
  965. string sql = "INSERT INTO Expression(expression_content,expression_description,range,isRelative,upBound,downBound,isCache,position)values(@content,@describe,@range,@relative,@upBound,@downBound,@isCache,@position)";
  966. SQLiteHelper db = new SQLiteHelper(dbPath);
  967. SQLiteParameter[] parameters = new SQLiteParameter[]{
  968. new SQLiteParameter("@content",content),
  969. new SQLiteParameter("@describe",describe),
  970. new SQLiteParameter("@range",range),
  971. new SQLiteParameter("@relative",relative),
  972. new SQLiteParameter("@upBound",upBound),
  973. new SQLiteParameter("@downBound",downBound),
  974. new SQLiteParameter("@isCache",isCache),
  975. new SQLiteParameter("@position",position)
  976. };
  977. db.ExecuteNonQuery(sql, parameters);
  978. }
  979. //Expression表的更新
  980. public static void UpdateExpressionData(string id, string content, string describe, double range, int relative, double upBound, double downBound, int isCache,string position)
  981. {
  982. //Boolean a = false;
  983. string sql = "UPDATE Expression SET expression_content=@content,expression_description=@describe,range=@range,isRelative=@relative,upBound=@upBound,downBound=@downBound,isCache=@isCache,position=@position WHERE id=@id";
  984. SQLiteHelper db = new SQLiteHelper(dbPath);
  985. SQLiteParameter[] parameters = new SQLiteParameter[]{
  986. new SQLiteParameter("@content",content),
  987. new SQLiteParameter("@describe",describe),
  988. new SQLiteParameter("@id",id),
  989. new SQLiteParameter("@range",range),
  990. new SQLiteParameter("@relative",relative),
  991. new SQLiteParameter("@upBound",upBound),
  992. new SQLiteParameter("@downBound",downBound),
  993. new SQLiteParameter("@isCache",isCache),
  994. new SQLiteParameter("@position",position)
  995. };
  996. db.ExecuteNonQuery(sql, parameters);
  997. }
  998. //Expression表仅更新取值范围的方法
  999. public static void UpdateExpressionDataOnlyWithRange(string content, double range, int relative)
  1000. {
  1001. //Boolean a = false;
  1002. string sql = "UPDATE Expression SET range=@range,isRelative=@relative WHERE expression_content=@content";
  1003. SQLiteHelper db = new SQLiteHelper(dbPath);
  1004. SQLiteParameter[] parameters = new SQLiteParameter[]{
  1005. new SQLiteParameter("@content",content),
  1006. new SQLiteParameter("@range",range),
  1007. new SQLiteParameter("@relative",relative)
  1008. };
  1009. db.ExecuteNonQuery(sql, parameters);
  1010. }
  1011. //Expression表记录的删除
  1012. public static int DeleteExpressionItem(string id)
  1013. {
  1014. string sql = "DELETE FROM Expression WHERE id=@id";
  1015. SQLiteHelper db = new SQLiteHelper(dbPath);
  1016. SQLiteParameter[] parameters = new SQLiteParameter[]{
  1017. new SQLiteParameter("@id",id)
  1018. };
  1019. return db.ExecuteNonQuery(sql, parameters);
  1020. }
  1021. #endregion
  1022. #region 配置表Config的相关操作
  1023. //查找所有的expression的content列
  1024. public static void GetAllConfigContent(Dictionary<string, string> target)
  1025. {
  1026. target.Clear();
  1027. string sql = "SELECT key,value FROM Config WHERE 1";
  1028. SQLiteHelper db = new SQLiteHelper(dbPath);
  1029. SQLiteParameter[] parameters = new SQLiteParameter[]{
  1030. };
  1031. using (SQLiteDataReader reader = db.ExecuteReader(sql, parameters))
  1032. {
  1033. while (reader.Read())
  1034. {
  1035. string tempKey = reader.IsDBNull(0) ? "" : reader.GetString(0);
  1036. string tempValue = reader.IsDBNull(1) ? "" : reader.GetString(1);
  1037. if (tempKey == "")
  1038. {
  1039. break;
  1040. }
  1041. //KeyValuePair<string, double> temp = new KeyValuePair<string, double>(tempKey,0);
  1042. target.Add(tempKey, tempValue);
  1043. }
  1044. }
  1045. }
  1046. //更新激活码信息
  1047. public static void UpdateRegisterCode(string name, string pw, string code)
  1048. {
  1049. //Boolean a = false;
  1050. string sql = "UPDATE Config SET value=@name WHERE key='organization_name'";
  1051. SQLiteHelper db = new SQLiteHelper(dbPath);
  1052. SQLiteParameter[] parameters = new SQLiteParameter[]{
  1053. new SQLiteParameter("@name",name)
  1054. };
  1055. db.ExecuteNonQuery(sql, parameters);
  1056. sql = "UPDATE Config SET value=@pw WHERE key='organization_pw'";
  1057. db = new SQLiteHelper(dbPath);
  1058. parameters = new SQLiteParameter[]{
  1059. new SQLiteParameter("@pw",pw)
  1060. };
  1061. db.ExecuteNonQuery(sql, parameters);
  1062. sql = "UPDATE Config SET value=@code WHERE key='organization_active_code'";
  1063. db = new SQLiteHelper(dbPath);
  1064. parameters = new SQLiteParameter[]{
  1065. new SQLiteParameter("@code",code)
  1066. };
  1067. db.ExecuteNonQuery(sql, parameters);
  1068. }
  1069. //更新血压单位显示hhmg或者kpa,如果为1则是hhmg
  1070. public static void UpdateDocSetting(string value)
  1071. {
  1072. //Boolean a = false;
  1073. string sql = "UPDATE Config SET value=@value WHERE key='bp_unit_mmhg'";
  1074. SQLiteHelper db = new SQLiteHelper(dbPath);
  1075. SQLiteParameter[] parameters = new SQLiteParameter[]{
  1076. new SQLiteParameter("@value",value)
  1077. };
  1078. db.ExecuteNonQuery(sql, parameters);
  1079. }
  1080. //更新平滑参数
  1081. public static void UpdateSmoothPara(int ori_pts, int ori_times, int dri_pts, int dri_times, int filter_when_saving)
  1082. {
  1083. //Boolean a = false;
  1084. string sql = "UPDATE Config SET value=@ori_pts WHERE key='original_smooth_points'";
  1085. SQLiteHelper db = new SQLiteHelper(dbPath);
  1086. SQLiteParameter[] parameters = new SQLiteParameter[]{
  1087. new SQLiteParameter("@ori_pts",ori_pts)
  1088. };
  1089. db.ExecuteNonQuery(sql, parameters);
  1090. sql = "UPDATE Config SET value=@ori_times WHERE key='original_smooth_times'";
  1091. db = new SQLiteHelper(dbPath);
  1092. parameters = new SQLiteParameter[]{
  1093. new SQLiteParameter("@ori_times",ori_times)
  1094. };
  1095. db.ExecuteNonQuery(sql, parameters);
  1096. sql = "UPDATE Config SET value=@dri_pts WHERE key='derive_smooth_points'";
  1097. db = new SQLiteHelper(dbPath);
  1098. parameters = new SQLiteParameter[]{
  1099. new SQLiteParameter("@dri_pts",dri_pts)
  1100. };
  1101. db.ExecuteNonQuery(sql, parameters);
  1102. sql = "UPDATE Config SET value=@dri_times WHERE key='derive_smooth_times'";
  1103. db = new SQLiteHelper(dbPath);
  1104. parameters = new SQLiteParameter[]{
  1105. new SQLiteParameter("@dri_times",dri_times)
  1106. };
  1107. db.ExecuteNonQuery(sql, parameters);
  1108. sql = "UPDATE Config SET value=@filter_when_saving WHERE key='filter_when_saving'";
  1109. db = new SQLiteHelper(dbPath);
  1110. parameters = new SQLiteParameter[]{
  1111. new SQLiteParameter("@filter_when_saving",filter_when_saving)
  1112. };
  1113. db.ExecuteNonQuery(sql, parameters);
  1114. }
  1115. //只更新特征值数列的平滑参数
  1116. public static void UpdateEigenSmoothPara(int egi_pts, int egi_times)
  1117. {
  1118. //Boolean a = false;
  1119. string sql = "UPDATE Config SET value=@egi_pts WHERE key='eigen_smooth_points'";
  1120. SQLiteHelper db = new SQLiteHelper(dbPath);
  1121. SQLiteParameter[] parameters = new SQLiteParameter[]{
  1122. new SQLiteParameter("@egi_pts",egi_pts)
  1123. };
  1124. db.ExecuteNonQuery(sql, parameters);
  1125. sql = "UPDATE Config SET value=@egi_times WHERE key='eigen_smooth_times'";
  1126. db = new SQLiteHelper(dbPath);
  1127. parameters = new SQLiteParameter[]{
  1128. new SQLiteParameter("@egi_times",egi_times)
  1129. };
  1130. db.ExecuteNonQuery(sql, parameters);
  1131. }
  1132. //更新报告中report_figure_name
  1133. public static void UpdateReportFigureName(string new_name)
  1134. {
  1135. string sql = "UPDATE Config SET value=@new_name WHERE key='report_figure_name'";
  1136. SQLiteHelper db = new SQLiteHelper(dbPath);
  1137. SQLiteParameter[] parameters = new SQLiteParameter[]{
  1138. new SQLiteParameter("@new_name",new_name)
  1139. };
  1140. db.ExecuteNonQuery(sql, parameters);
  1141. }
  1142. //更新主公式等参数
  1143. public static void UpdateGeneralExpression(string new_segment_name, string segement_threhold, string new_expression)
  1144. {
  1145. string sql = "UPDATE Config SET value=@new_segment_name WHERE key='segement_name'";
  1146. SQLiteHelper db = new SQLiteHelper(dbPath);
  1147. SQLiteParameter[] parameters = new SQLiteParameter[]{
  1148. new SQLiteParameter("@new_segment_name",new_segment_name)
  1149. };
  1150. db.ExecuteNonQuery(sql, parameters);
  1151. sql = "UPDATE Config SET value=@segement_threhold WHERE key='segement_threhold'";
  1152. db = new SQLiteHelper(dbPath);
  1153. parameters = new SQLiteParameter[]{
  1154. new SQLiteParameter("@segement_threhold",segement_threhold)
  1155. };
  1156. db.ExecuteNonQuery(sql, parameters);
  1157. sql = "UPDATE Config SET value=@new_expression WHERE key='general_expression'";
  1158. db = new SQLiteHelper(dbPath);
  1159. parameters = new SQLiteParameter[]{
  1160. new SQLiteParameter("@new_expression",new_expression)
  1161. };
  1162. db.ExecuteNonQuery(sql, parameters);
  1163. }
  1164. #endregion
  1165. #region 以下是测试功能,请在生产环境之前删除这些功能
  1166. public static byte[] getRecordData()
  1167. {
  1168. string dbPathTest = @"D:\\sourceCode\\github\\Junde_New\bin\\Debug\\data\\data.db";
  1169. string sql = "SELECT Data FROM Record WHERE id = 22";
  1170. SQLiteHelper db = new SQLiteHelper(dbPathTest);
  1171. Console.WriteLine("database ok!");
  1172. using (SQLiteDataReader reader = db.ExecuteReader(sql, null))
  1173. {
  1174. byte[] buffer = null;
  1175. if (reader.HasRows)
  1176. {
  1177. reader.Read();
  1178. long len = reader.GetBytes(reader.GetOrdinal("Data"), 0, null, 0, 0);
  1179. Console.WriteLine("len is :" + len.ToString());
  1180. buffer = new byte[len];
  1181. len = reader.GetBytes(reader.GetOrdinal("Data"), 0, buffer, 0, (int)len);
  1182. for(int i =0;i<100;i++)
  1183. {
  1184. Console.WriteLine(buffer[i]);
  1185. }
  1186. return buffer;
  1187. //System.IO.MemoryStream ms = new System.IO.MemoryStream(buffer);
  1188. //System.Drawing.Image iamge = System.Drawing.Image.FromStream(ms);
  1189. //pictureBox1.Image = iamge;
  1190. }
  1191. }
  1192. return null;
  1193. }
  1194. #endregion
  1195. }
  1196. }