11.html 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>sqlite数据库测试</title>
  6. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  7. <script src="https://cdn.bootcss.com/sql.js/0.5.0/js/sql-optimized.js"></script>
  8. </head>
  9. <body>
  10. <style>
  11. body {
  12. margin: 0;
  13. padding: 0;
  14. color: darkslateblue;
  15. background-color: papayawhip;
  16. font-family: "Al Bayan";
  17. font-size: 20px;
  18. }
  19. input {border-color: darkslateblue;
  20. height: 40px;
  21. width: 200px;
  22. }
  23. button {
  24. color: darkslateblue;
  25. background-color: lavender;
  26. height: 40px;
  27. width: 80px;
  28. font-size: larger;
  29. }
  30. </style>
  31. <br>
  32. <div id="container">
  33. <div id="header" style="background-color:#FFA500;">
  34. <h1 style="margin-bottom:0;">Chinese Hand Writing</h1></div>
  35. <div id="content" style="background-color:#EEEEEE;float:left;" style="text-align:center">
  36. </div>
  37. <div id="footer" style="background-color:#FFA500;clear:both;text-align:center;">
  38. </div>
  39. </div>
  40. <script></script>
  41. <div class="" style=" text-align:center;">
  42. <h1>汉字手写</h1>
  43. <input type="text" id="key">
  44. <button onclick=query()>检索</button>
  45. <br>
  46. <img src="" alt="0000" id="img0" sizes="100">
  47. <img src="" alt="1111" id="img1" sizes="100">
  48. <img src="" alt="2222" id="img2" sizes="100">
  49. <img src="" alt="3333" id="img3" sizes="100">
  50. </div>
  51. <script>
  52. function query() {
  53. var key = document.getElementById('key').value;
  54. // alert(key);
  55. axios.get("chinese.db", {responseType: 'arraybuffer'})
  56. .then(function (response) {
  57. let db = new window.SQL.Database(new Uint8Array(response.data));
  58. // 执行查询
  59. for (let i=0;i<key.length;i++){
  60. let sql="SELECT * FROM chinese WHERE font='"+key[i]+"'";
  61. let r = db.exec(sql);
  62. console.log(sql)
  63. // 解析数据
  64. let obj = dbToObj(r);
  65. document.getElementById('img'+i).src='../res/'+obj[0].font+"_"+obj[0].time+"_"+obj[0].author+'_'+obj[0].type+'.png';
  66. }
  67. })
  68. .catch(function (error) {
  69. console.info(error);
  70. });
  71. // 方法传入两个数组,第一个数组为key,第二个数组对应位置为value,此方法在Python中为zip()函数。
  72. const ArraytoObj = (keys = [], values = []) =>
  73. {
  74. if (keys.length === 0 || values.length === 0) return {};
  75. const len = keys.length > values.length ? values.length : keys.length;
  76. const obj = {};
  77. for (let i = 0; i < len; ++i) {
  78. obj[keys[i]] = values[i]
  79. }
  80. return obj;
  81. }
  82. ;
  83. // 转驼峰表示:func.camel('USER_ROLE',true) => UserRole
  84. // 转驼峰表示:func.camel('USER_ROLE',false) => userRole
  85. const camel = (str, firstUpper = false) =>
  86. {
  87. let ret = str.toLowerCase();
  88. ret = ret.replace(/_([\w+])/g, function (all, letter) {
  89. return letter.toUpperCase();
  90. });
  91. if (firstUpper) {
  92. ret = ret.replace(/\b(\w)(\w*)/g, function ($0, $1, $2) {
  93. return $1.toUpperCase() + $2;
  94. });
  95. }
  96. return ret;
  97. }
  98. ;
  99. // 把数组里面的所有转化为驼峰命名
  100. const camelArr = (arrs = []) =>
  101. {
  102. let _arrs = [];
  103. arrs.map(function (item) {
  104. _arrs.push(camel(item));
  105. });
  106. return _arrs;
  107. }
  108. ;
  109. // 读取数据库
  110. // 1.把columns转化为驼峰;
  111. // 2.把columns和values进行组合;
  112. const dbToObj = (_data = {}) =>
  113. {
  114. let _res = [];
  115. _data.map(function (item) {
  116. let _columns = camelArr(item.columns);
  117. item.values.map(function (values) {
  118. _res.push(ArraytoObj(_columns, values));
  119. });
  120. });
  121. return _res;
  122. }
  123. ;
  124. }
  125. </script>
  126. </body>
  127. </html>