0

我正在使用 phonegap Android 平台。我在资产文件夹中有 mydatabase.sql 文件。我不知道如何处理那个 sql 文件。基本上我必须使用 javascript 加载这个 sql 文件。这是 mydatabase.sql 中的一些数据:

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

CREATE TABLE `media` (
  `Id` int(11) NOT NULL auto_increment,
  `Part` int(11) NOT NULL,
  `No` int(11) NOT NULL,
  `Title_EN` varchar(100) collate utf8_unicode_ci default NULL,
  `Year` int(24) default NULL,
  PRIMARY KEY  (`Id`)
  \\
  \\another values
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=649 ;

--
-- Dumping data for table `media`
--

INSERT INTO `media` (`Id`, `Part`, `No`, `Title_Hari`, `Type`,  `Artist_EN`,  `Track`, `Year`) VALUES
(1, 1, 1,  'Sant Sangeet' 'Cassette', NULL, NULL, NULL, 7, NULL),
 \\
 \\
 \\ another values

CREATE TABLE `media1` (

 \\ create another table

INSERT INTO `media1`

 \\ insert data 
 \\ 
 \\

mydatabase.sql 包含创建表方法和向该表插入值。

在js中尝试了一些方法:

演示.JS:

var db;

function ReadFile() {
    console.log("call database");
    try
    {
        if (window.openDatabase)
        {

            db = openDatabase("../sql/mydatabase.sql", "1.0", " Database", 200000);
            console.log("open database");
            db.transaction (function (transaction) 

                    {
                console.log("transaction database");


                            var sql = "SELECT * FROM media";

                            transaction.executeSql (sql, undefined, 

                            function (transaction, result)

                            {

                                alert(JSON.stringify(result));
                                console.log(JSON.stringify(result));

                            },  function(error){
                                console.log("error");
                            });

                    });
        }
        else
        {
            console.log("else database");
            // Handle no database support
        }
    }
    catch(err)
    { 
        console.log("error database");
        // Handle error
    }
}

输出:

  call database
  open database
  transaction database
  no such a tabke media
  error

所以我的问题是如何在我的应用程序中导入它或如何处理这个 sql 数据库以及在导入这个数据库之后,如何执行 CRUD 操作并将查询传递给它。请推荐一些教程。任何帮助,将不胜感激!!

谢谢。

4

1 回答 1

1

您可以SQL使用ajax获取文件的内容,然后将其作为查询执行。但是你在这里做错的是你试图从一个文件中创建一个数据库,但你不能。对象等待这些参数
openDatabase

  • 数据库名称
  • 版本号
  • 文字说明
  • 数据库大小
  • 创建回调

您不能将文件路径传递给第一个参数。这只是数据库的名称。所以保持简单:

db = openDatabase("mydb", "1.0", " Database description", 200000);

那么你有两个选择。我第一次描述ajax的使用和易于理解的方法是将您的查询直接放入javascript文件中:

db.transaction(function (tx) {  
   tx.executeSql(
       'CREATE TABLE `media` (
           `Id` int(11) NOT NULL auto_increment,
           `Part` int(11) NOT NULL,
           \\ other values
       )
   ');
});

注意:算了ENGINE=InnoDB DEFAULT CHARSET=utf8 ...。那是针对服务器端数据库的。

或者使用ajax(使用jQueryie):

$.get("../sql/mydatabase.sql", function(content) {
    db.transaction(function (tx) {  
        tx.executeSql(content);
    });
});

请参阅:jQuery.get()

于 2013-11-15T09:39:20.267 回答