SQLiteModel.cs 69 KB

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