当前位置:Gxlcms > 数据库问题 > cordova调用本地SQLite数据库的方法

cordova调用本地SQLite数据库的方法

时间:2021-07-01 10:21:17 帮助过:2人阅读

  整个下午的时间用来钻研如何用cordova调用移动端本地SQLite数据库。首先我并不是用eclipse来编程的,而是用cordova建立project后直接用notepad编辑www下的index文件。

 

一、cordova的下载安装和建立project的方法

该部分不是文章重点,抽空另开一篇文章详细介绍。官网上有相关教程:http://cordova.apache.org/docs/en/5.0.0/guide_cli_index.md.html#The%20Command-Line%20Interface(插一句,测试时尽量用真机,虚拟机实在太慢)

 

二、插件下载

调用SQLite需要使用cordova的插件cordova-sqlite-storage,下载方法为在所建的project目录下打开cmd,输入cordova plugin add cordova-sqlite-storage回车。

 

三、插件的使用

参考资源:https://www.npmjs.com/package/cordova-sqlite-storage

使用sqlite数据库的基本步骤

(1)建立连接

   有两种方法可用来创建并打开对数据库的一个连接:

  • var db = window.sqlitePlugin.openDatabase({name: "my.db"});  //my.db表示数据库名称
  • var db = window.sqlitePlugin.openDatabase("myDatabase.db", "1.0", "Demo", -1); //myDatabase.db代表数据库名称,1.0是版本号,Demo是描述信息,第四个参数参考其他资料应该是预估数据库大小,-1代表什么自己也没搞懂,请大神指点。

(2)执行SQL操作

   使用db.transaction()方法来执行一个SQL操作,该方法只有一个参数。该参数是一个函数,并且通常是匿名的,可以直接定义在db.transaction()中。如:

db.transaction(function(tx)

{

...

});

  这个匿名函数具有一个事务类型的参数tx,它是一个事务对象,该事物对象具有一个方法:executeSql(),使用该方法可以执行SQL语句。

  该方法有四个参数,其中后三个参数是可选的:

  • 查询字符串
  • 替换参数化查询中的占位符的数据
  • SQL执行成功时调用的回调函数
  • SQL执行失败时调用的回调函数

例如下面的代码,同时定义了四个参数:

tx.executeSql("INSERT INTO test_table (data, data_num) VALUES (?,?)"["test"100]function1,function2);

(3)对结果进行处理

  3.1 当SQL操作执行成功时回执行一个回调函数,即上文中的funciton1,该函数有两个参数,一个是执行他的事物对象tx,另一个是操作返回的结果res(下面会详细介绍),即:

function function1(tx,res)

{

...

}

  3.2当SQL操作失败时就会调用function2,该函数也有两个参数,一个是tx,另一个是错误对象,通过该错误对象可以获知具体的错误信息:

function function2(tx,err)

{

alert(err.message);

}

  3.3 成功使用executeSql()方法执行的SQL语句可以返回一个执行结果即上文中的res,该执行结果回作为回调函数的一个参数。

执行结果是一个SQLResultSet对象,由SQLResultSet接口定义:

interface SQLResultSet{

  readonly attribute long insertId;

  readonly attribute long rowsAffected;

  readonly attribute SQLResultRowList rows;

};

  1、属性insertId返回记录行的行ID,每个SQL INSERT插入操作会自动插入一个行ID,如果插入多行,则该属性返回最后一行的行ID;如果不存在记录行则调用该属性时抛出INVALID_ACCESS_ERR异常。

  2、属性rowsAffect返回SQL语句所改变的记录行的行数,如果没有任何改变,则该属性返回0;

  3、属性rows 返回一个SQLResultList 对象,表示返回的所用记录行,结果按照数据库中的序列排列,如果没有数据,则返回空对象,即SQLResultList.length属相值为0;

SQLResultList对象由SQLResultList 接口定义:

interface SQLResultSetRowList{

  readonly attribute unsigned long length;

  getter any item(in unsigned long index);

};

  1、属性length表示返回记录行的总行数。

  2、item(x)方法根据索引号x获取一个指定的行(下标从0开始)。如果不存在指定的索引号,则该方法返回null。

  一行就是一个javascript Object类型的对象,每个记录行的属性名相当于对象的属性名,例如row={id:0,data:“test”,data_num:100},使用对象语法可以获取每个属性的值,如row[data]。

 

整体代码如下:

在手机上显示结果为:

data_num=100

data=test

id=0

  1. <span style="color: #008080;"> 1</span> <span style="color: #0000ff;"><!</span><span style="color: #ff00ff;">DOCTYPE HTML</span><span style="color: #0000ff;">></span>
  2. <span style="color: #008080;"> 2</span> <span style="color: #0000ff;"><</span><span style="color: #800000;">html</span><span style="color: #0000ff;">></span>
  3. <span style="color: #008080;"> 3</span> <span style="color: #0000ff;"><</span><span style="color: #800000;">head</span><span style="color: #0000ff;">></span>
  4. <span style="color: #008080;"> 4</span> <span style="color: #0000ff;"><</span><span style="color: #800000;">meta </span><span style="color: #ff0000;">charset</span><span style="color: #0000ff;">="utf-8"</span><span style="color: #0000ff;">></span>
  5. <span style="color: #008080;"> 5</span> <span style="color: #0000ff;"><</span><span style="color: #800000;">script </span><span style="color: #ff0000;">src</span><span style="color: #0000ff;">="cordova.js"</span><span style="color: #ff0000;"> type</span><span style="color: #0000ff;">="text/javascript"</span><span style="color: #0000ff;">></</span><span style="color: #800000;">script</span><span style="color: #0000ff;">></span>
  6. <span style="color: #008080;"> 6</span> <span style="color: #0000ff;"><</span><span style="color: #800000;">link </span><span style="color: #ff0000;">rel</span><span style="color: #0000ff;">="stylesheet"</span><span style="color: #ff0000;"> href</span><span style="color: #0000ff;">="http://code.jquery.com/ui/1.11.0/themes/smoothness/jquery-ui.css"</span><span style="color: #0000ff;">></span>
  7. <span style="color: #008080;"> 7</span> <span style="color: #0000ff;"><</span><span style="color: #800000;">script </span><span style="color: #ff0000;">src</span><span style="color: #0000ff;">="http://code.jquery.com/jquery-1.10.2.js"</span><span style="color: #0000ff;">></</span><span style="color: #800000;">script</span><span style="color: #0000ff;">></span>
  8. <span style="color: #008080;"> 8</span> <span style="color: #0000ff;"><</span><span style="color: #800000;">script </span><span style="color: #ff0000;">src</span><span style="color: #0000ff;">="http://code.jquery.com/ui/1.11.0/jquery-ui.js"</span><span style="color: #0000ff;">></</span><span style="color: #800000;">script</span><span style="color: #0000ff;">></span>
  9. <span style="color: #008080;"> 9</span> <span style="color: #0000ff;"><</span><span style="color: #800000;">link </span><span style="color: #ff0000;">rel</span><span style="color: #0000ff;">="stylesheet"</span><span style="color: #ff0000;"> href</span><span style="color: #0000ff;">="http://jqueryui.com/resources/demos/style.css"</span><span style="color: #0000ff;">></span>
  10. <span style="color: #008080;">10</span> <span style="color: #0000ff;"><</span><span style="color: #800000;">link </span><span style="color: #ff0000;">rel</span><span style="color: #0000ff;">="stylesheet"</span><span style="color: #ff0000;"> href</span><span style="color: #0000ff;">="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.css"</span><span style="color: #0000ff;">></span>
  11. <span style="color: #008080;">11</span> <span style="color: #0000ff;"><</span><span style="color: #800000;">script </span><span style="color: #ff0000;">src</span><span style="color: #0000ff;">="http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.js"</span><span style="color: #0000ff;">></</span><span style="color: #800000;">script</span><span style="color: #0000ff;">></span>
  12. <span style="color: #008080;">12</span> <span style="color: #0000ff;"></</span><span style="color: #800000;">head</span><span style="color: #0000ff;">></span>
  13. <span style="color: #008080;">13</span> <span style="color: #0000ff;"><</span><span style="color: #800000;">body</span><span style="color: #0000ff;">></span>
  14. <span style="color: #008080;">14</span> <span style="color: #0000ff;"><</span><span style="color: #800000;">script</span><span style="color: #0000ff;">></span>
  15. <span style="color: #008080;">15</span> <span style="background-color: #f5f5f5; color: #000000;">document.addEventListener(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">deviceready</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">, onDeviceReady, </span><span style="background-color: #f5f5f5; color: #0000ff;">false</span><span style="background-color: #f5f5f5; color: #000000;">);
  16. </span><span style="color: #008080;">16</span>
  17. <span style="color: #008080;">17</span> <span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;"> onDeviceReady() {
  18. </span><span style="color: #008080;">18</span> <span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;"> db </span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;"> window.sqlitePlugin.openDatabase(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">Database</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">, </span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">1.0</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">, </span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">Demo</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">, </span><span style="background-color: #f5f5f5; color: #000000;">-</span><span style="background-color: #f5f5f5; color: #000000;">1</span><span style="background-color: #f5f5f5; color: #000000;">);
  19. </span><span style="color: #008080;">19</span>
  20. <span style="color: #008080;">20</span> <span style="background-color: #f5f5f5; color: #000000;"> db.transaction(</span><span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;">(tx) {
  21. </span><span style="color: #008080;">21</span> <span style="background-color: #f5f5f5; color: #000000;"> tx.executeSql(</span><span style="background-color: #f5f5f5; color: #000000;">‘</span><span style="background-color: #f5f5f5; color: #000000;">DROP TABLE IF EXISTS test_table</span><span style="background-color: #f5f5f5; color: #000000;">‘</span><span style="background-color: #f5f5f5; color: #000000;">);
  22. </span><span style="color: #008080;">22</span> <span style="background-color: #f5f5f5; color: #000000;"> tx.executeSql(</span><span style="background-color: #f5f5f5; color: #000000;">‘</span><span style="background-color: #f5f5f5; color: #000000;">CREATE TABLE IF NOT EXISTS test_table (id integer primary key, data text, data_num integer)</span><span style="background-color: #f5f5f5; color: #000000;">‘</span><span style="background-color: #f5f5f5; color: #000000;">);
  23. </span><span style="color: #008080;">23</span>
  24. <span style="color: #008080;">24</span> <span style="background-color: #f5f5f5; color: #000000;"> tx.executeSql(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">INSERT INTO test_table (data, data_num) VALUES (?,?)</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">, [</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">test</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">, </span><span style="background-color: #f5f5f5; color: #000000;">100</span><span style="background-color: #f5f5f5; color: #000000;">], </span><span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;">(tx, res) {
  25. </span><span style="color: #008080;">25</span> <span style="background-color: #f5f5f5; color: #000000;"> tx.executeSql(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">select * from test_table;</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">, [], </span><span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;">(tx, res) {
  26. </span><span style="color: #008080;">26</span> <span style="background-color: #f5f5f5; color: #000000;"> alert(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">hello world</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">);
  27. </span><span style="color: #008080;">27</span> <span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;"> row</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">res.rows.item(</span><span style="background-color: #f5f5f5; color: #000000;">0</span><span style="background-color: #f5f5f5; color: #000000;">);
  28. </span><span style="color: #008080;">28</span> <span style="background-color: #f5f5f5; color: #0000ff;">for</span><span style="background-color: #f5f5f5; color: #000000;">(</span><span style="background-color: #f5f5f5; color: #0000ff;">var</span><span style="background-color: #f5f5f5; color: #000000;"> j </span><span style="background-color: #f5f5f5; color: #0000ff;">in</span><span style="background-color: #f5f5f5; color: #000000;"> row){
  29. </span><span style="color: #008080;">29</span> <span style="background-color: #f5f5f5; color: #000000;"> document.write(j</span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #000000;">row[j]</span><span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;"><br /></span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">);
  30. </span><span style="color: #008080;">30</span> <span style="background-color: #f5f5f5; color: #000000;"> }
  31. </span><span style="color: #008080;">31</span> <span style="background-color: #f5f5f5; color: #000000;"> });
  32. </span><span style="color: #008080;">32</span> <span style="background-color: #f5f5f5; color: #000000;"> }, </span><span style="background-color: #f5f5f5; color: #0000ff;">function</span><span style="background-color: #f5f5f5; color: #000000;">(e) {
  33. </span><span style="color: #008080;">33</span> <span style="background-color: #f5f5f5; color: #000000;"> alert(</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">ERROR: </span><span style="background-color: #f5f5f5; color: #000000;">"</span> <span style="background-color: #f5f5f5; color: #000000;">+</span><span style="background-color: #f5f5f5; color: #000000;"> e.message);
  34. </span><span style="color: #008080;">34</span> <span style="background-color: #f5f5f5; color: #000000;"> });
  35. </span><span style="color: #008080;">35</span> <span style="background-color: #f5f5f5; color: #000000;"> });
  36. </span><span style="color: #008080;">36</span> <span style="background-color: #f5f5f5; color: #000000;">}
  37. </span><span style="color: #008080;">37</span> <span style="color: #0000ff;"></</span><span style="color: #800000;">script</span><span style="color: #0000ff;">></span>
  38. <span style="color: #008080;">38</span> <span style="color: #0000ff;"></</span><span style="color: #800000;">body</span><span style="color: #0000ff;">></span>
  39. <span style="color: #008080;">39</span> <span style="color: #0000ff;"></</span><span style="color: #800000;">html</span><span style="color: #0000ff;">></span>

 

cordova调用本地SQLite数据库的方法

标签:

人气教程排行