想看一次橘子海 發表於 2023-3-28 09:16:00

javascript操作sqlite数据库

<h1>js读写sqlite</h1>
<div class="markdown-body">
<p>JavaScript 是一种在浏览器中运行的脚本语言,无法直接读写 SQLite 数据库。不过,你可以使用一些 JavaScript 库或框架来操作 SQLite 数据库,例如 SQLite.js 和 sql.js。</p>
<p>SQLite.js 是一个使用 JavaScript 实现的 SQLite 数据库,可以在浏览器环境中使用。它可以让你在浏览器中创建、打开、查询和修改 SQLite 数据库。使用 SQLite.js,你可以将 SQLite 数据库文件上传到服务器,然后使用 JavaScript 代码在浏览器中操作该文件。</p>
<p>sql.js 也是一个使用 JavaScript 实现的 SQLite 数据库,但与 SQLite.js 不同,它是完全在客户端中运行的。它使用 Emscripten 将 C/C++ 代码编译成 JavaScript 代码,从而实现了在浏览器中运行 SQLite 数据库的功能。使用 sql.js,你可以直接将 SQLite 数据库文件打包到你的网站中,并使用 JavaScript 代码在浏览器中操作该文件。</p>
<p>总的来说,如果你需要在浏览器中操作 SQLite 数据库,可以考虑使用 SQLite.js 或 sql.js。这两个库都提供了方便易用的 API,可以让你轻松地在浏览器中读写 SQLite 数据库。</p>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>出处:https://juejin.cn/s/js%E8%AF%BB%E5%86%99sqlite</p>
<p>======================================================================================</p>
<h1 class="postTitle"><span>js -- 操作sqlite数据库</span></h1>
<div id="cnblogs_post_body" class="blogpost-body cnblogs-markdown">
<blockquote>
<p>最近看到一个使用js来操作sqlite数据库的,测试了一下,具体使用的是</p>
<p>js操作类: https://github.com/kripken/sql.js/ (sqlite js 驱动)</p>
<p>异步请求:http://npm.taobao.org/package/axios(异步请求插件,只有12.6k)</p>
<p>这里使用的js驱动是和服务器端使用方法一致,sql标准语法都支持,可以用第三方管理工具来管理数据文件</p>
<p>目前我使用的是 <code>Navicat Premium 12</code>。</p>
</blockquote>
<p>下面是测试的源代码:</p>
<h2 id="1--数据库sql自己运行生成testdb和html页面放在同一目录下">1. 数据库sql</h2>
<p>自己运行生成test.db,和html页面放在同一目录下:<button class="cnblogs-toc-button" title="显示目录导航"></button></p>
<pre class="highlighter-hljs"><code class="highlighter-hljs language-sql hljs">PRAGMA foreign_keys <span class="hljs-operator">=</span> <span class="hljs-literal">false</span>;

<span class="hljs-comment">-- ----------------------------</span>
<span class="hljs-comment">-- Table structure for sys_user</span>
<span class="hljs-comment">-- ----------------------------</span>
<span class="hljs-keyword">DROP</span> <span class="hljs-keyword">TABLE</span> IF <span class="hljs-keyword">EXISTS</span> "sys_user";
<span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">TABLE</span> "sys_user" (
"id" <span class="hljs-type">bigint</span>(<span class="hljs-number">11</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span>,
"role_id" <span class="hljs-type">bigint</span>(<span class="hljs-number">11</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span>,
"user_name" <span class="hljs-type">varchar</span>(<span class="hljs-number">255</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span>,
"user_pass" <span class="hljs-type">varchar</span>(<span class="hljs-number">64</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span>,
"nick_name" <span class="hljs-type">varchar</span>(<span class="hljs-number">255</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span>,
"register_time" datetime <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span>,
"status" <span class="hljs-type">int</span>(<span class="hljs-number">11</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-number">1</span>,
"sort" <span class="hljs-type">decimal</span>(<span class="hljs-number">16</span>,<span class="hljs-number">2</span>) <span class="hljs-keyword">NOT</span> <span class="hljs-keyword">NULL</span> <span class="hljs-keyword">DEFAULT</span> <span class="hljs-number">0.00</span>,
<span class="hljs-keyword">PRIMARY</span> KEY ("id")
)
<span class="hljs-keyword">WITHOUT</span> ROWID;

<span class="hljs-comment">-- ----------------------------</span>
<span class="hljs-comment">-- Records of sys_user</span>
<span class="hljs-comment">-- ----------------------------</span>
<span class="hljs-keyword">INSERT</span> <span class="hljs-keyword">INTO</span> "sys_user" <span class="hljs-keyword">VALUES</span> (<span class="hljs-number">1</span>, <span class="hljs-number">1</span>, <span class="hljs-string">'lxw'</span>, <span class="hljs-number">123456</span>, <span class="hljs-string">'李兴武'</span>, <span class="hljs-string">'2019-01-07 11:22:30'</span>, <span class="hljs-number">0</span>, <span class="hljs-number">1</span>);
<span class="hljs-keyword">INSERT</span> <span class="hljs-keyword">INTO</span> "sys_user" <span class="hljs-keyword">VALUES</span> (<span class="hljs-number">2</span>, <span class="hljs-number">1</span>, <span class="hljs-string">'lwq'</span>, <span class="hljs-number">123456</span>, <span class="hljs-string">'浏览器'</span>, <span class="hljs-string">'2019-01-08 11:11:11'</span>, <span class="hljs-number">0</span>, <span class="hljs-number">2</span>);
<span class="hljs-keyword">INSERT</span> <span class="hljs-keyword">INTO</span> "sys_user" <span class="hljs-keyword">VALUES</span> (<span class="hljs-number">3</span>, <span class="hljs-number">1</span>, <span class="hljs-string">'tjun'</span>, <span class="hljs-number">123123</span>, <span class="hljs-string">'田俊'</span>, <span class="hljs-string">'2018-01-01 12:22:35'</span>, <span class="hljs-number">1</span>, <span class="hljs-number">3</span>);
<span class="hljs-keyword">INSERT</span> <span class="hljs-keyword">INTO</span> "sys_user" <span class="hljs-keyword">VALUES</span> (<span class="hljs-number">4</span>, <span class="hljs-number">1</span>, <span class="hljs-string">'tttt'</span>, <span class="hljs-number">123456</span>, <span class="hljs-string">'通天塔'</span>, <span class="hljs-string">''</span>, <span class="hljs-number">1</span>, <span class="hljs-number">4</span>);

<span class="hljs-comment">-- ----------------------------</span>
<span class="hljs-comment">-- Indexes structure for table sys_user</span>
<span class="hljs-comment">-- ----------------------------</span>
<span class="hljs-keyword">CREATE</span> <span class="hljs-keyword">UNIQUE</span> INDEX "pk"
<span class="hljs-keyword">ON</span> "sys_user" (
"id" <span class="hljs-keyword">COLLATE</span> <span class="hljs-type">BINARY</span> <span class="hljs-keyword">ASC</span>
);

PRAGMA foreign_keys <span class="hljs-operator">=</span> <span class="hljs-literal">true</span>;

</code></pre>
<h2 id="2--html可直接复制下来运行">2. html(可直接复制下来运行)<button class="cnblogs-toc-button" title="显示目录导航"></button></h2>
<pre class="highlighter-hljs"><code class="language-html highlighter-hljs hljs language-xml"><span class="hljs-meta">&lt;!DOCTYPE <span class="hljs-keyword">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">html</span> <span class="hljs-attr">lang</span>=<span class="hljs-string">"zh-cn"</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">charset</span>=<span class="hljs-string">"UTF-8"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">title</span>&gt;</span>sqlite数据库测试<span class="hljs-tag">&lt;/<span class="hljs-name">title</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://unpkg.com/axios/dist/axios.min.js"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://cdn.bootcss.com/sql.js/0.5.0/js/sql-optimized.js"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>

<span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>sqlite数据库测试,使用js操作sqlite数据库<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>这里使用axios读取test.db文件,进行初始化数据库连接,<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>查询速度不快,除非不想写后台要直接操作数据库,不然没什么用。<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>具体效果可查看代码和控制台打印的数据。<span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>

<span class="hljs-tag">&lt;<span class="hljs-name">script</span>&gt;</span><span class="language-javascript">

    <span class="hljs-comment">// 读取数据库数据</span>
    axios.<span class="hljs-title function_">get</span>(<span class="hljs-string">"test.db"</span>, {<span class="hljs-attr">responseType</span>: <span class="hljs-string">'arraybuffer'</span>})
      .<span class="hljs-title function_">then</span>(<span class="hljs-keyword">function</span> (<span class="hljs-params">response</span>) {
            <span class="hljs-keyword">let</span> db = <span class="hljs-keyword">new</span> <span class="hljs-variable language_">window</span>.<span class="hljs-property">SQL</span>.<span class="hljs-title class_">Database</span>(<span class="hljs-keyword">new</span> <span class="hljs-title class_">Uint8Array</span>(response.<span class="hljs-property">data</span>));
            <span class="hljs-comment">// 执行查询</span>
            <span class="hljs-keyword">let</span> s = <span class="hljs-keyword">new</span> <span class="hljs-title class_">Date</span>().<span class="hljs-title function_">getTime</span>();
            <span class="hljs-keyword">let</span> r = db.<span class="hljs-title function_">exec</span>(<span class="hljs-string">"SELECT * FROM sys_user WHERE status = 1;"</span>);
            <span class="hljs-keyword">let</span> e = <span class="hljs-keyword">new</span> <span class="hljs-title class_">Date</span>().<span class="hljs-title function_">getTime</span>();
            <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">info</span>(<span class="hljs-string">"查询数据耗时:"</span> + (e - s) + <span class="hljs-string">"ms"</span>);
            <span class="hljs-comment">// 解析数据</span>
            <span class="hljs-keyword">let</span> obj = <span class="hljs-title function_">dbToObj</span>(r);
            <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">info</span>(obj);
      })
      .<span class="hljs-title function_">catch</span>(<span class="hljs-keyword">function</span> (<span class="hljs-params">error</span>) {
            <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">info</span>(error);
      });

    <span class="hljs-comment">// 方法传入两个数组,第一个数组为key,第二个数组对应位置为value,此方法在Python中为zip()函数。</span>
    <span class="hljs-keyword">const</span> <span class="hljs-title function_">ArraytoObj</span> = (<span class="hljs-params">keys = [], values = []</span>) =&gt; {
      <span class="hljs-keyword">if</span> (keys.<span class="hljs-property">length</span> === <span class="hljs-number">0</span> || values.<span class="hljs-property">length</span> === <span class="hljs-number">0</span>) <span class="hljs-keyword">return</span> {};
      <span class="hljs-keyword">const</span> len = keys.<span class="hljs-property">length</span> &gt; values.<span class="hljs-property">length</span> ? values.<span class="hljs-property">length</span> : keys.<span class="hljs-property">length</span>;
      <span class="hljs-keyword">const</span> obj = {};
      <span class="hljs-keyword">for</span> (<span class="hljs-keyword">let</span> i = <span class="hljs-number">0</span>; i &lt; len; ++i) {
            obj] = values
      }
      <span class="hljs-keyword">return</span> obj;
    };

    <span class="hljs-comment">// 转驼峰表示:func.camel('USER_ROLE',true) =&gt; UserRole</span>
    <span class="hljs-comment">// 转驼峰表示:func.camel('USER_ROLE',false) =&gt; userRole</span>
    <span class="hljs-keyword">const</span> <span class="hljs-title function_">camel</span> = (<span class="hljs-params">str, firstUpper = <span class="hljs-literal">false</span></span>) =&gt; {
      <span class="hljs-keyword">let</span> ret = str.<span class="hljs-title function_">toLowerCase</span>();
      ret = ret.<span class="hljs-title function_">replace</span>(<span class="hljs-regexp">/_([\w+])/g</span>, <span class="hljs-keyword">function</span> (<span class="hljs-params">all, letter</span>) {
            <span class="hljs-keyword">return</span> letter.<span class="hljs-title function_">toUpperCase</span>();
      });
      <span class="hljs-keyword">if</span> (firstUpper) {
            ret = ret.<span class="hljs-title function_">replace</span>(<span class="hljs-regexp">/\b(\w)(\w*)/g</span>, <span class="hljs-keyword">function</span> (<span class="hljs-params">$<span class="hljs-number">0</span>, $<span class="hljs-number">1</span>, $<span class="hljs-number">2</span></span>) {
                <span class="hljs-keyword">return</span> $<span class="hljs-number">1.</span><span class="hljs-title function_">toUpperCase</span>() + $<span class="hljs-number">2</span>;
            });
      }
      <span class="hljs-keyword">return</span> ret;
    };

    <span class="hljs-comment">// 把数组里面的所有转化为驼峰命名</span>
    <span class="hljs-keyword">const</span> <span class="hljs-title function_">camelArr</span> = (<span class="hljs-params">arrs = []</span>) =&gt; {
      <span class="hljs-keyword">let</span> _arrs = [];
      arrs.<span class="hljs-title function_">map</span>(<span class="hljs-keyword">function</span> (<span class="hljs-params">item</span>) {
            _arrs.<span class="hljs-title function_">push</span>(<span class="hljs-title function_">camel</span>(item));
      });
      <span class="hljs-keyword">return</span> _arrs;
    };

    <span class="hljs-comment">// 读取数据库</span>
    <span class="hljs-comment">// 1.把columns转化为驼峰;</span>
    <span class="hljs-comment">// 2.把columns和values进行组合;</span>
    <span class="hljs-keyword">const</span> <span class="hljs-title function_">dbToObj</span> = (<span class="hljs-params">_data = {}</span>) =&gt; {
      <span class="hljs-keyword">let</span> _res = [];
      _data.<span class="hljs-title function_">map</span>(<span class="hljs-keyword">function</span> (<span class="hljs-params">item</span>) {
            <span class="hljs-keyword">let</span> _columns = <span class="hljs-title function_">camelArr</span>(item.<span class="hljs-property">columns</span>);
            item.<span class="hljs-property">values</span>.<span class="hljs-title function_">map</span>(<span class="hljs-keyword">function</span> (<span class="hljs-params">values</span>) {
                _res.<span class="hljs-title function_">push</span>(<span class="hljs-title class_">ArraytoObj</span>(_columns, values));
            });
      });
      <span class="hljs-keyword">return</span> _res;
    };
</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span>出处:https://www.cnblogs.com/lixingwu/p/10236640.html</span></p>
<p>=======================================================================================</p>
<h1 class="_1RuRku">从JavaScript访问SQLite3数据库</h1>
<p>比较好的解决方案为使用sql.js</p>
<blockquote>
<p>For the impatients, try the demo here: http://kripken.github.io/sql.js/GUI/</p>
</blockquote>
<blockquote>
<p>sql.js is a port of SQLite to JavaScript, by compiling the SQLite C code with Emscripten. It uses a virtual database file stored in memory, and thus does’nt persist the changes made to the database. However, it allows you to import any existing sqlite file, and to export the created database as a javascript typed array.</p>
</blockquote>
<blockquote>
<p>There is no C bindings or node-gyp compilation here, sql.js is a simple javascript file, that can be used like any traditional javascript library. If you are building a native application in javascript (using Electron for instance), or are working in node.js, you will likely prefer to use a native binding of SQLite to javascript.</p>
</blockquote>
<blockquote>
<p>SQLite is public domain, sql.js is MIT licensed.</p>
</blockquote>
<p>以下是待验证的使用:</p>
<blockquote>
<p>var db = SQL.open();<br>
var data = db.exec(command);</p>


















</blockquote>
<p>详细使用方案见用JavaScript操作SQLite文件</p>
<p>还有一篇文章也不错<br>
其中详细说明了怎么连接自己的数据库。<br>
过去一段时间因为要弄一个有趣的CS架构程序,需要找一个文件型数据库,最后决定用sqlite3数据库。但是js连接sqlite3 数据库伤透了脑筋。使用nodejs连接sqlite数据库但是node的ABI与node-webkit的ABI对不上号,就快在崩溃的边缘时找到了一个比较好的连接sqlite3数据库的工具sql.js。从此变得一发不可收拾。<br>
sql.js下载地址:https://github.com/kripken/sql.js<br>
下面是使用sql.js写的一个demo:<br>
需在页面上导入sql.js</p>
<div class="_2Uzcx_"><button class="VJbwyy" type="button"></button>
<pre class="line-numberslanguage-php"><code class="language-php">         <span class="token keyword">function</span> <span class="token function">test</span><span class="token punctuation">(</span><span class="token punctuation">)</span>

      <span class="token punctuation">{</span>
            <span class="token keyword">var</span> fs <span class="token operator">=</span> <span class="token keyword">require</span><span class="token punctuation">(</span><span class="token double-quoted-string string">"fs"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
            <span class="token comment">//Create the database</span>
            <span class="token keyword">var</span> db <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">SQL<span class="token punctuation">.</span>Database</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
            <span class="token comment">// NOTE: You can also use new sql.Database(data) where</span>
            <span class="token comment">// data is an Uint8Array representing an SQLite database file</span>
            <span class="token comment">// Execute some sql</span>
            sqlstr <span class="token operator">=</span> <span class="token double-quoted-string string">"CREATE TABLE hello (a int, b char);"</span><span class="token punctuation">;</span>
            sqlstr <span class="token operator">+</span><span class="token operator">=</span> <span class="token double-quoted-string string">"INSERT INTO hello VALUES (0, 'hello');"</span>
            sqlstr <span class="token operator">+</span><span class="token operator">=</span> <span class="token double-quoted-string string">"INSERT INTO hello VALUES (1, 'world');"</span>
            db<span class="token punctuation">.</span><span class="token function">run</span><span class="token punctuation">(</span>sqlstr<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Run the query without returning anything</span>
            <span class="token keyword">var</span> res <span class="token operator">=</span> db<span class="token punctuation">.</span><span class="token function">exec</span><span class="token punctuation">(</span><span class="token double-quoted-string string">"SELECT * FROM hello"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
               <span class="token comment">// Prepare an sql statement</span>
            <span class="token keyword">var</span> stmt <span class="token operator">=</span> db<span class="token punctuation">.</span><span class="token function">prepare</span><span class="token punctuation">(</span><span class="token double-quoted-string string">"SELECT * FROM hello WHERE a=:aval AND b=:bval"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
            <span class="token comment">// Bind values to the parameters and fetch the results of the query</span>
            <span class="token keyword">var</span> result <span class="token operator">=</span> stmt<span class="token punctuation">.</span><span class="token function">getAsObject</span><span class="token punctuation">(</span><span class="token punctuation">{</span><span class="token single-quoted-string string">':aval'</span> <span class="token punctuation">:</span> <span class="token number">1</span><span class="token punctuation">,</span> <span class="token single-quoted-string string">':bval'</span> <span class="token punctuation">:</span> <span class="token single-quoted-string string">'world'</span><span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
            <span class="token function">alert</span><span class="token punctuation">(</span>result<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Will print {a:1, b:'world'}</span>
            <span class="token comment">// Bind other values</span>
            stmt<span class="token punctuation">.</span><span class="token function">bind</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token single-quoted-string string">'hello'</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
            <span class="token keyword">while</span> <span class="token punctuation">(</span>stmt<span class="token punctuation">.</span><span class="token function">step</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token function">alert</span><span class="token punctuation">(</span>stmt<span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Will print </span>
            <span class="token comment">// free the memory used by the statement</span>
            stmt<span class="token punctuation">.</span><span class="token function">free</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
            <span class="token comment">// You can not use your statement anymore once it has been freed.</span>
            <span class="token comment">// But not freeing your statements causes memory leaks. You don't want that.</span>
            <span class="token comment">// Export the database to an Uint8Array containing the SQLite database file</span>
            <span class="token keyword">var</span> binaryArray <span class="token operator">=</span> db<span class="token punctuation">.</span><span class="token function">export</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
            <span class="token keyword">var</span> buffer <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Buffer</span><span class="token punctuation">(</span>binaryArray<span class="token punctuation">)</span><span class="token punctuation">;</span>
            fs<span class="token punctuation">.</span><span class="token function">writeFileSync</span><span class="token punctuation">(</span><span class="token double-quoted-string string">"filename.sqlite"</span><span class="token punctuation">,</span> buffer<span class="token punctuation">)</span><span class="token punctuation">;</span>
      <span class="token punctuation">}</span>
</code></pre>
</div>
<p>也可以使用自己新建的sqlite数据库文件<br>
导入方式:</p>
<div class="_2Uzcx_"><button class="VJbwyy" type="button"></button>
<pre class="line-numberslanguage-dart"><code class="language-dart">   <span class="token keyword">var</span> fs <span class="token operator">=</span><span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'fs'</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    <span class="token keyword">var</span> filebuffer<span class="token operator">=</span>fs<span class="token punctuation">.</span><span class="token function">readFileSync</span><span class="token punctuation">(</span><span class="token string">'test.sqlite'</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">// Load the db</span>
    <span class="token keyword">var</span> db<span class="token operator">=</span> <span class="token keyword">new</span><span class="token class-name">SQL<span class="token punctuation">.</span>Database</span><span class="token punctuation">(</span>filebuffer<span class="token punctuation">)</span><span class="token punctuation">;</span>

    <span class="token comment">// Exportthe database to an Uint8Array containing the SQLite databasefile</span>
       varbinaryArray <span class="token operator">=</span> db<span class="token punctuation">.</span><span class="token keyword">export</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
       <span class="token keyword">var</span> buffer <span class="token operator">=</span><span class="token keyword">new</span> <span class="token class-name">Buffer</span><span class="token punctuation">(</span>binaryArray<span class="token punctuation">)</span><span class="token punctuation">;</span>
      fs<span class="token punctuation">.</span><span class="token function">writeFileSync</span><span class="token punctuation">(</span><span class="token string">"test.sqlite"</span><span class="token punctuation">,</span> buffer<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre>
</div>
<p>&nbsp;</p>
<p>出处:https://www.jianshu.com/p/364740cf6b75</p>
<p>======================================================================================</p>
<h1>JS操作sqlite数据库</h1>
<div id="content_views" class="markdown_views prism-atom-one-dark">
<p>##JS操作SQLite数据库</p>
<p>###0.问题的由来</p>
<ul>
<li>
<p>一直非常讨厌MySql等等体积庞大的数据库,在项目里都是尽可能用SQLite数据库</p>
</li>
<li>
<p>一个本地项目同时需要内网上能够简单的访问部分信息,因此涉及到JavaScript访问SQLite的问题</p>
</li>
</ul>
<p>###1.问题的解决</p>
<p>####1.1sql.js库</p>
<p>有伟大的github在,当然不用自己写数据库访问库了。sql.js库是一个用Emscripten(别问我这是什么,我也不知道)从c++转译过来的访问sqlite3数据库的JS库,支持到最新的3.8.7.4版本的sqlite3.该库使用的时候只需引用单一的文件便可实现功能,完全脱离sqlite。</p>
<p>####1.2开发环境</p>
<blockquote>
<p>1.EverEdit(推荐一下这个国产编辑器) 64bit</p>
</blockquote>
<blockquote>
<p>2.html+JavaScript+css+sql.js</p>
</blockquote>
<blockquote>
<p>3.准备一个sqlite的数据库文件,参考1 ,2</p>
</blockquote>
<blockquote>
<p>4.SQLiteSpy 软件</p>
</blockquote>
<p>####1.3主要代码</p>
<pre class="prettyprint" data-index="0"><code class="prism language-html has-numbering" style="position: unset">
<span class="token doctype">&lt;!DOCTYPE html&gt;</span>
<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>html</span><span class="token punctuation">&gt;</span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>head</span><span class="token punctuation">&gt;</span></span>
                <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>meta</span> <span class="token attr-name">http-equiv</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>Content-type<span class="token punctuation">"</span></span> <span class="token attr-name">content</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>text/html; charset=UTF-8<span class="token punctuation">"</span></span> <span class="token punctuation">/&gt;</span></span>
                <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>text/javascript<span class="token punctuation">"</span></span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>sql.js<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">&gt;</span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>head</span><span class="token punctuation">&gt;</span></span>

        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>body</span><span class="token punctuation">&gt;</span></span>
                <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>button</span> <span class="token attr-name">name</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>test<span class="token punctuation">"</span></span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>button<span class="token punctuation">"</span></span> <span class="token attr-name">value</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>val<span class="token punctuation">"</span></span> <span class="token attr-name">onclick</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>save()<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span>Button Text<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>button</span><span class="token punctuation">&gt;</span></span>
                <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>input</span> <span class="token attr-name">id</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>uploadInput<span class="token punctuation">"</span></span> <span class="token attr-name">type</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>file<span class="token punctuation">"</span></span> <span class="token attr-name">onchange</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">"</span>getfile()<span class="token punctuation">"</span></span><span class="token punctuation">&gt;</span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>body</span><span class="token punctuation">&gt;</span></span>
        <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span><span class="token punctuation">&gt;</span></span><span class="token script language-javascript">
                <span class="token keyword">function</span> <span class="token function">save</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
                        <span class="token comment">//Create the database</span>
                        <span class="token keyword">var</span> db <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">window<span class="token punctuation">.</span>SQL<span class="token punctuation">.</span>Database</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>                       

                        db<span class="token punctuation">.</span><span class="token function">run</span><span class="token punctuation">(</span><span class="token string">"CREATE TABLE test (列1 int, 列2 char);"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>                       
                        db<span class="token punctuation">.</span><span class="token function">run</span><span class="token punctuation">(</span><span class="token string">"INSERT INTO test VALUES (0,'hello');"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                        db<span class="token punctuation">.</span><span class="token function">run</span><span class="token punctuation">(</span><span class="token string">"INSERT INTO test VALUES (1,'world');"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                        db<span class="token punctuation">.</span><span class="token function">run</span><span class="token punctuation">(</span><span class="token string">"INSERT INTO test VALUES (55,'34534545');"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                        db<span class="token punctuation">.</span><span class="token function">run</span><span class="token punctuation">(</span><span class="token string">"INSERT INTO test VALUES (166,'woteggrgrld');"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                        <span class="token comment">//save to local file</span>
                        <span class="token keyword">var</span> data <span class="token operator">=</span> db<span class="token punctuation">.</span><span class="token keyword">export</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                        <span class="token keyword">var</span> arraybuff <span class="token operator">=</span> data<span class="token punctuation">.</span>buffer<span class="token punctuation">;</span>
                        <span class="token keyword">var</span> blob <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Blob</span><span class="token punctuation">(</span><span class="token punctuation">[</span>arraybuff<span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                        <span class="token keyword">var</span> url <span class="token operator">=</span> window<span class="token punctuation">.</span><span class="token constant">URL</span><span class="token punctuation">.</span><span class="token function">createObjectURL</span><span class="token punctuation">(</span>blob<span class="token punctuation">)</span><span class="token punctuation">;</span>
                        <span class="token keyword">var</span> a <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">createElement</span><span class="token punctuation">(</span><span class="token string">"a"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                        a<span class="token punctuation">.</span>href <span class="token operator">=</span> url<span class="token punctuation">;</span>                       
                        a<span class="token punctuation">.</span>download <span class="token operator">=</span> <span class="token string">'test.db'</span><span class="token punctuation">;</span>
              a<span class="token punctuation">.</span><span class="token function">click</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
              window<span class="token punctuation">.</span><span class="token constant">URL</span><span class="token punctuation">.</span><span class="token function">revokeObjectURL</span><span class="token punctuation">(</span>url<span class="token punctuation">)</span><span class="token punctuation">;</span>                       

                <span class="token punctuation">}</span>
                <span class="token keyword">function</span> <span class="token function">getfile</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
                  <span class="token keyword">var</span> files <span class="token operator">=</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">"uploadInput"</span><span class="token punctuation">)</span><span class="token punctuation">.</span>files<span class="token punctuation">;</span><span class="token comment">//document.getElementById("uploadInput").value;</span>                       

                        <span class="token keyword">var</span> file <span class="token operator">=</span> files<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
</span>   <span class="token script language-javascript">                  <span class="token keyword">var</span> fr <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">FileReader</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                        fr<span class="token punctuation">.</span><span class="token function-variable function">onload</span> <span class="token operator">=</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
                      <span class="token keyword">var</span> Uints <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Uint8Array</span><span class="token punctuation">(</span>fr<span class="token punctuation">.</span>result<span class="token punctuation">)</span><span class="token punctuation">;</span>
                      <span class="token keyword">var</span> db <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">window<span class="token punctuation">.</span>SQL<span class="token punctuation">.</span>Database</span><span class="token punctuation">(</span>Uints<span class="token punctuation">)</span><span class="token punctuation">;</span>                     

                                <span class="token keyword">var</span> res <span class="token operator">=</span> db<span class="token punctuation">.</span><span class="token function">exec</span><span class="token punctuation">(</span><span class="token string">"SELECT 列2 FROM test"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                                <span class="token keyword">for</span><span class="token punctuation">(</span>i<span class="token operator">=</span><span class="token number">0</span><span class="token punctuation">;</span>i<span class="token operator">&lt;</span>res<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span>values<span class="token punctuation">.</span>length<span class="token punctuation">;</span>i<span class="token operator">++</span><span class="token punctuation">)</span>
                                <span class="token punctuation">{</span><span class="token comment">//query values</span>
                                        console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>res<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">.</span>values<span class="token punctuation">[</span>i<span class="token punctuation">]</span><span class="token operator">+</span><span class="token string">' '</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
                                <span class="token punctuation">}</span>       
                        <span class="token punctuation">}</span>
                        fr<span class="token punctuation">.</span><span class="token function">readAsArrayBuffer</span><span class="token punctuation">(</span>file<span class="token punctuation">)</span><span class="token punctuation">;</span>                       

                <span class="token punctuation">}</span>
        </span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">&gt;</span></span>

<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>html</span><span class="token punctuation">&gt;</span></span></code></pre>
<div class="hljs-button signin" data-title="登录后复制" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.4334&quot;}">&nbsp;</div>
<p>####1.4几点说明</p>
<p>1.15-20行对数据库的操作是在内存中进行的,保存到本地的话需要执行21行后的代码。</p>
<p>2.上面代码保存到本地不会覆盖原数据库。</p>
<p>3.查询的时候res是一个保存了多行对象的数组。在代码文档里写到</p>
<blockquote>
<p>We have the following table, named test :</p>
<p>id age name</p>
<p>1 1 Ling</p>
<p>2 18 Paul</p>
<p>3 3 Markus</p>
<p>We query it like that:</p>
</blockquote>
<pre class="prettyprint" data-index="1"><code class="prism language-JavaScript has-numbering" style="position: unset">
var db = new SQL.Database();
var res = db.exec("SELECT id FROM test; SELECT age,name FROM test;");</code></pre>
<div class="hljs-button signin" data-title="登录后复制" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.4334&quot;}">&nbsp;</div>
<blockquote>
<p>res is now :</p>
<p>[</p>
<pre class="prettyprint" data-index="2"><code class="has-numbering" style="position: unset">   {columns: ['id'], values:[,,]},</code></pre>
<pre class="prettyprint" data-index="3"><code class="has-numbering" style="position: unset">   {columns: ['age','name'], values:[,,]}</code></pre>
<p>]</p>
</blockquote>
<h2>给个赏吧</h2>
<p>如果我的文字解决了你的问题,请打个赏的,让我更有动力:)<br> [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t9uAcIwK-1605511739012)(http://oza71xi0c.bkt.clouddn.com/18-9-3/34854473.jpg)]</p>






                </div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>出处:https://blog.csdn.net/sunnyloves/article/details/48002839</p>
<p>======================================================================================</p>
<h1 class="entry-title">javascript读写本地sqlite数据库</h1>
<div class="single-content" style="height: auto !important">
<p>sqlite这种单文件数据库,类型简单功能强大效率也不错,非常适合单机软件开发。</p>
<p>把一个我以前写的JavaScript sqlite数据库操作类分享给大家,还是先上代码,注释写的很清楚啦,支持增删改查,支持链式查询,使用的时候不用new。</p>
<div class="codecolorer-container text dawn" style="overflow: auto; white-space: nowrap; width: 100%">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>11<br>12<br>13<br>14<br>15<br>16<br>17<br>18<br>19<br>20<br>21<br>22<br>23<br>24<br>25<br>26<br>27<br>28<br>29<br>30<br>31<br>32<br>33<br>34<br>35<br>36<br>37<br>38<br>39<br>40<br>41<br>42<br>43<br>44<br>45<br>46<br>47<br>48<br>49<br>50<br>51<br>52<br>53<br>54<br>55<br>56<br>57<br>58<br>59<br>60<br>61<br>62<br>63<br>64<br>65<br>66<br>67<br>68<br>69<br>70<br>71<br>72<br>73<br>74<br>75<br>76<br>77<br>78<br>79<br>80<br>81<br>82<br>83<br>84<br>85<br>86<br>87<br>88<br>89<br>90<br>91<br>92<br>93<br>94<br>95<br>96<br>97<br>98<br>99<br>100<br>101<br>102<br>103<br>104<br>105<br>106<br>107<br>108<br>109<br>110<br>111<br>112<br>113<br>114<br>115<br>116<br>117<br>118<br>119<br>120<br>121<br>122<br>123<br>124<br>125<br>126<br>127<br>128<br>129<br>130<br>131<br>132<br>133<br>134<br>135<br>136<br>137<br>138<br>139<br>140<br>141<br>142<br>143<br>144<br>145<br>146<br>147<br>148</div>












</td>
<td>
<div class="text codecolorer">/*sqlite数据库操作类 by sdxjwkq01*/<br>
this.Db={<br>
&nbsp; &nbsp; tableName:"",//表<br>
&nbsp; &nbsp; whereReg:"",//where条件<br>
&nbsp; &nbsp; orderReg:"",//排序条件<br>
&nbsp; &nbsp; pageReg:"",//分页<br>
&nbsp; &nbsp; dbUrl:"DRIVER=SQLite3 ODBC Driver;Database=Db/database.db",//数据库地址<br>
&nbsp; &nbsp; //取得表<br>
&nbsp; &nbsp; table:function(tableName){<br>
&nbsp; &nbsp; &nbsp; &nbsp; this.tableName=tableName;<br>
&nbsp; &nbsp; &nbsp; &nbsp; return this;<br>
&nbsp; &nbsp; },<br>
&nbsp; &nbsp; //取得where<br>
&nbsp; &nbsp; where:function(whereReg){<br>
&nbsp; &nbsp; &nbsp; &nbsp; this.whereReg=whereReg;<br>
&nbsp; &nbsp; &nbsp; &nbsp; return this;<br>
&nbsp; &nbsp; },<br>
&nbsp; &nbsp; //排序<br>
&nbsp; &nbsp; order:function(orderReg){<br>
&nbsp; &nbsp; &nbsp; &nbsp; this.orderReg=orderReg;<br>
&nbsp; &nbsp; &nbsp; &nbsp; return this;<br>
&nbsp; &nbsp; },<br>
&nbsp; &nbsp; //分页<br>
&nbsp; &nbsp; page:function(pageReg){<br>
&nbsp; &nbsp; &nbsp; &nbsp; this.pageReg=pageReg;<br>
&nbsp; &nbsp; &nbsp; &nbsp; return this;<br>
&nbsp; &nbsp; },<br>
&nbsp; &nbsp; //添加<br>
&nbsp; &nbsp; add:function(json){<br>
&nbsp; &nbsp; &nbsp; &nbsp; var sql="insert into "+this.tableName+"(";<br>
&nbsp; &nbsp; &nbsp; &nbsp; var fields=[];<br>
&nbsp; &nbsp; &nbsp; &nbsp; var values=[];<br>
&nbsp; &nbsp; &nbsp; &nbsp; for(var item in json){<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fields.push(item);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; values.push("'"+json+"'");<br>
&nbsp; &nbsp; &nbsp; &nbsp; }<br>
&nbsp; &nbsp; &nbsp; &nbsp; sql+=fields.join(",");<br>
&nbsp; &nbsp; &nbsp; &nbsp; sql+=") values("+values.join(",")+")";<br>
&nbsp; &nbsp; &nbsp; &nbsp; var con = new ActiveXObject("ADODB.Connection");<br>
&nbsp; &nbsp; &nbsp; &nbsp; con.ConnectionString =this.dbUrl;<br>
&nbsp; &nbsp; &nbsp; &nbsp; con.Open();<br>
&nbsp; &nbsp; &nbsp; &nbsp; con.Execute(sql);<br>
&nbsp; &nbsp; &nbsp; &nbsp; con.Close();<br>
&nbsp; &nbsp; },<br>
&nbsp; &nbsp; //删除<br>
&nbsp; &nbsp; del:function(id){<br>
&nbsp; &nbsp; &nbsp; &nbsp; var con = new ActiveXObject("ADODB.Connection");<br>
&nbsp; &nbsp; &nbsp; &nbsp; con.ConnectionString = this.dbUrl;<br>
&nbsp; &nbsp; &nbsp; &nbsp; con.Open();<br>
&nbsp; &nbsp; &nbsp; &nbsp; if(typeof id=="object"){<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; con.Execute("delete from "+this.tableName+" where id in ("+id.join(",")+")");<br>
&nbsp; &nbsp; &nbsp; &nbsp; }else{<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; con.Execute("delete from "+this.tableName+" where id="+id);<br>
&nbsp; &nbsp; &nbsp; &nbsp; }<br>
&nbsp; &nbsp; &nbsp; &nbsp; con.Close();<br>
&nbsp; &nbsp; },<br>
&nbsp; &nbsp; //修改<br>
&nbsp; &nbsp; upd:function(json){<br>
&nbsp; &nbsp; &nbsp; &nbsp; var sql="update "+this.tableName+" set ";<br>
&nbsp; &nbsp; &nbsp; &nbsp; var data=[];<br>
&nbsp; &nbsp; &nbsp; &nbsp; for(var item in json){<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; data.push(item+"="+json);<br>
&nbsp; &nbsp; &nbsp; &nbsp; }<br>
&nbsp; &nbsp; &nbsp; &nbsp; sql+=data.join(",");<br>
&nbsp; &nbsp; &nbsp; &nbsp; if(this.whereReg.length&gt;0){<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sql+=" where "+this.whereReg;<br>
&nbsp; &nbsp; &nbsp; &nbsp; }<br>
&nbsp; &nbsp; &nbsp; &nbsp; var con = new ActiveXObject("ADODB.Connection");<br>
&nbsp; &nbsp; &nbsp; &nbsp; con.ConnectionString =this.dbUrl;<br>
&nbsp; &nbsp; &nbsp; &nbsp; con.Open();<br>
&nbsp; &nbsp; &nbsp; &nbsp; var re=con.Execute(sql);<br>
&nbsp; &nbsp; &nbsp; &nbsp; con.Close();<br>
&nbsp; &nbsp; },<br>
&nbsp; &nbsp; //查询<br>
&nbsp; &nbsp; sel:function(){<br>
&nbsp; &nbsp; &nbsp; &nbsp; var con = new ActiveXObject("ADODB.Connection");<br>
&nbsp; &nbsp; &nbsp; &nbsp; con.ConnectionString =this.dbUrl;<br>
&nbsp; &nbsp; &nbsp; &nbsp; con.Open();<br>
&nbsp; &nbsp; &nbsp; &nbsp; var sql="";<br>
&nbsp; &nbsp; &nbsp; &nbsp; sql+="select * from "+this.tableName;<br>
&nbsp; &nbsp; &nbsp; &nbsp; if(this.whereReg.length&gt;0){<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sql+=" where "+this.whereReg;<br>
&nbsp; &nbsp; &nbsp; &nbsp; }<br>
&nbsp; &nbsp; &nbsp; &nbsp; if(this.orderReg.length&gt;0){<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sql+=" order by "+this.orderReg;<br>
&nbsp; &nbsp; &nbsp; &nbsp; }<br>
&nbsp; &nbsp; &nbsp; &nbsp; if(this.pageReg.length&gt;0){<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var limit=this.pageReg.split(",");<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sql+=" limit "+limit+" offset "+limit;<br>
&nbsp; &nbsp; &nbsp; &nbsp; }<br>
&nbsp; &nbsp; &nbsp; &nbsp; var result=con.Execute(sql);<br>
&nbsp; &nbsp; &nbsp; &nbsp; var resultArray=[];<br>
&nbsp; &nbsp; &nbsp; &nbsp; var h=0;<br>
&nbsp; &nbsp; &nbsp; &nbsp; while(!result.eof){<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(h==0){<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //试探指针位置<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(i=0;;i++){<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try{<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; eval("var temp=result("+i+")");<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }catch(e){<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var fieldLength=i;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; h++;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var temp=[];<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(i=0;i&lt;fieldLength;i++){<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; eval("temp.push(''+result("+i+"))");<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; resultArray.push(temp);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; result.movenext(); <br>
&nbsp; &nbsp; &nbsp; &nbsp; }<br>
&nbsp; &nbsp; &nbsp; &nbsp; con.Close();<br>
&nbsp; &nbsp; &nbsp; &nbsp; return resultArray;<br>
&nbsp; &nbsp; },<br>
&nbsp; &nbsp; //直接执行<br>
&nbsp; &nbsp; execute:function(sql){<br>
&nbsp; &nbsp; &nbsp; &nbsp; var con = new ActiveXObject("ADODB.Connection");<br>
&nbsp; &nbsp; &nbsp; &nbsp; con.ConnectionString =this.dbUrl;<br>
&nbsp; &nbsp; &nbsp; &nbsp; con.Open();<br>
&nbsp; &nbsp; &nbsp; &nbsp; var result=con.Execute(sql);<br>
&nbsp; &nbsp; &nbsp; &nbsp; var resultArray=[];<br>
&nbsp; &nbsp; &nbsp; &nbsp; var h=0;<br>
&nbsp; &nbsp; &nbsp; &nbsp; while(!result.eof){<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(h==0){<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //试探指针位置<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(i=0;;i++){<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try{<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; eval("var temp=result("+i+")");<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }catch(e){<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var fieldLength=i;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; h++;<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var temp=[];<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(i=0;i&lt;fieldLength;i++){<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; eval("temp.push(''+result("+i+"))");<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; resultArray.push(temp);<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; result.movenext(); <br>
&nbsp; &nbsp; &nbsp; &nbsp; }<br>
&nbsp; &nbsp; &nbsp; &nbsp; con.Close();<br>
&nbsp; &nbsp; &nbsp; &nbsp; return resultArray;<br>
&nbsp; &nbsp; }<br>
}</div>












</td>












</tr>












</tbody>












</table>












</div>
<p>例如下面是更新一条数据</p>
<p>&nbsp;</p>
<center>
<ins class="adsbygoogle" style="display: block; text-align: center; height: 0" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-1776224780566592" data-ad-slot="3590016480" data-adsbygoogle-status="done" data-ad-status="unfilled">
<div id="aswift_2_host" style="border: none; height: 0; width: 748px; margin: 0; padding: 0; position: relative; visibility: visible; background-color: rgba(0, 0, 0, 0); display: inline-block; overflow: hidden; opacity: 0" title="Advertisement"></div>












</ins>

</center>
<p>&nbsp;</p>
<p><img alt="" width="663" height="326" class="box-hide box-show lazyload" data-src="//i2.wp.com/img-blog.csdnimg.cn/20200329201744916.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NkeGp3a3EwMQ==,size_16,color_FFFFFF,t_70"></p>
<p>也可以像下图这样直接运行sql语句</p>
<p><img alt="" width="802" height="500" class="box-hide box-show lazyload" data-src="//i2.wp.com/img-blog.csdnimg.cn/20200329201944667.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NkeGp3a3EwMQ==,size_16,color_FFFFFF,t_70"></p>
<p>运行这个sqlite操作类,电脑需要安装SQLite ODBC 驱动,非精简版系统一般都有安装,这个步骤可以忽略。</p>













                                                                                                                                                                                               
                                                </div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>出处:https://www.codenong.com/cs105185005/</p>
<p>======================================================================================</p>
<h1 id="1033529521">使用Javascript直接读取Sqlite3的最佳方法?</h1>
<p>对于我们的一个Insights平台,我们计划在后台生成摘要SQLite3数据库,并将其作为图表在浏览器上呈现.目前,我们打算服务于服务于数据需求的服务器端端点.</p>
<p>我们希望通过完全消除服务器端端点来进一步优化这一点.我们很好(从安全角度来看)直接在S3上公开SQLite3并读取javascript模块并生成图表.</p>
<p>SQLite3文件预计相当小 - 可能是4-6列,也许是10-500行数据,并且所有这些文件只包含一个表.测试运行表明文件大小小于15KB.我们不打算在浏览器上编写或操作SQLite3.我们不需要将它作为WebSQL或IndexedDB表单在浏览器上缓存,但如果需要,我们可以使用它们.</p>
<p>从我的网络搜索中,我们无法找到可以读取SQLite3文件并查询结果的Javascript库.如果您知道任何可以执行此操作的JavaScript库,请告诉我们.</p>
<p>另一方面,如果你认为我们不应该出于任何原因这样做,那么请把它们作为评论/答案抛出,因为这是我们第一次尝试的东西,似乎有点不合适-box,欢迎反馈!<br>-----------------------------------------------------------------------<br>lov*_*soa19<br>有一个调用的javascript库sql.js可以完全按照你的意愿行事.在你的情况下,你会这样使用它<br>var xhr = new XMLHttpRequest();<br>xhr.open('GET', '/path/to/database.sqlite', true);<br>xhr.responseType = 'arraybuffer';</p>
<p>xhr.onload = function(e) {<br>var uInt8Array = new Uint8Array(this.response);<br>var db = new SQL.Databse(uInt8Array);<br>var contents = db.exec("SELECT * FROM my_table");<br>// contents is now [{columns:['col1','col2',...], values:[, , ...]}]<br>};<br>xhr.send();<br>请参阅http://lovasoa.github.io/sql.js/documentation上的文档<br>-----------------------------------------------------------------------<br>+10。这就是解决方案。lovasoa 的提交已合并到原始 sql.js 中,请在 https://github.com/kripken/sql.js 获取。上面的例子只需要通过一种方式修改:在顶部添加`var SQL = window.SQL;`(当然是在包含sql.js文件并更改`my_table`之后)。效果很好(我用的是 Chrome)。 (4认同)</p>
<p>&nbsp;</p>
<p>出处:https://qa.1r1g.com/sf/ask/1033529521/</p>
<p>======================================================================================</p>
<h1>个人使用</h1>
<p>&nbsp;</p>

</div>
<div id="MySignature" role="contentinfo">
    <div class="div_masklayer" id="div_masklayer"></div>
<div class="div_popup" id="Div_popup">
<div style="float:left;width:50%">
<img class="img_zfb" id="img_zfb" src="https://images.cnblogs.com/cnblogs_com/mq0036/508398/o_12.png" />
</div>
<div style="float:left;width:50%">
<img class="img_zfb" id="img_zfb" src="https://images.cnblogs.com/cnblogs_com/mq0036/508398/o_200921131119o_12.png">
</div>
<p class="mid">您的资助是我最大的动力!<br>金额随意,欢迎来赏!<br>
<span style="color: #f9f">付</span>款后有任何问题请给我留言。</p>
</div>


<div class="autograph">
    <p> <span style="display: none"> 如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【<strong>推荐</strong>】按钮。<br>
      </span> 如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【<strong>关注我</strong>】。(●'◡'●)</p>
    <p>因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【<strong>Jack_孟</strong>】!</p>
    <div class="blogds">
      <b style="color:#f00;font-size: 22px">如果对你有所帮助,赞助一杯咖啡!打</b>
      
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      <b style="color: #f00; font-size: 22px">付款后有任何问题请给我留言!!!</b>
    </div>
    <p>本文来自博客园,作者:jack_Meng,转载请注明原文链接:https://www.cnblogs.com/mq0036/p/17263819.html</p>
    <p>【免责声明】本文来自源于网络,如涉及版权或侵权问题,请及时联系我们,我们将第一时间删除或更改!</p>
</div><br><br>
来源:https://www.cnblogs.com/mq0036/p/17263819.html
頁: [1]
查看完整版本: javascript操作sqlite数据库