如何比较SQLight数据库中的QML字符串

时间:2014-11-26 14:07:59

标签: sql compare qml symbian

我正在尝试创建一个匹配字符串函数,该函数将从qml读取一个SQLLite(javascript创建的)数据库并匹配该字符串(在我的情况下为其提供的Web地址),这是我的数据库文件代码:

.pragma library

var db;
// opens database at launch
function openDB()
{
    db = openDatabaseSync("BookmarksDB","1.0","Bookmarks Database",1000000);
    createTable();
}

// creates table if it doesn't exist, otherwise ignores
function createTable()
{
    db.transaction(
       function(tx) {
          tx.executeSql("CREATE TABLE IF NOT EXISTS bookmarks (id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, url TEXT, creationdate TEXT, modified DATETIME)");
       }
    )
}

// deletes table
function dropTable()
{
    db.transaction(
       function(tx) {
          tx.executeSql("DROP TABLE IF EXISTS bookmarks");
       }
    )
}

// creates a single bookmark record
function createBookmark(bookmarkItem)
{
    db.transaction(
       function(tx) {
          tx.executeSql("INSERT INTO bookmarks (title, url, creationdate, modified) VALUES(?,?,?,?)",[bookmarkItem.title, bookmarkItem.url, bookmarkItem.creationdate, bookmarkItem.modified]);
       }
    )
}

// updates a single bookmark record
function updateBookmark(bookmarkItem)
{
    db.transaction(
       function(tx) {
          tx.executeSql("UPDATE bookmarks SET title = ?, url = ?, creationdate = ?, modified = ? WHERE id = ?",
                        [bookmarkItem.title, bookmarkItem.url, bookmarkItem.creationdate, bookmarkItem.modified, bookmarkItem.id]);
       }
    )
}

// deletes a single bookmark record
function deleteBookmark(id)
{
    db.transaction(
       function(tx) {
          tx.executeSql("DELETE FROM bookmarks WHERE id = ?", [id]);
       }
    )
}
// read list of bookmarks
function readBookmarkList(model)
{
    model.clear();
    var sqlstring = "SELECT id, title, url, creationdate FROM bookmarks";
    db.readTransaction(
       function(tx) {
          var rs;
          rs = tx.executeSql(sqlstring);
             for (var i = 0; i < rs.rows.length; i++) {
                model.append(rs.rows.item(i))
             }
       }
    )
}



// read a single bookmark item
function readBookmarkItem(id) {
    var data = {}
    db.readTransaction(
       function(tx) {
          var rs = tx.executeSql("SELECT * FROM bookmarks WHERE id=?", [id])
          if(rs.rows.length === 1) {
             data = rs.rows.item(0)
          }
       }
    )
    return data;
}

// create a default bookmark item
function defaultItem()
{
    return {title: "", url: "", creationdate: new Date(), modified: new Date()}
}

我想创造类似的东西,  function checkUrl(url){

if(dbvalues == url){ 返回true } else {return false}

} }

但我不知道如何从表中读取所有数据并将其与函数中给出的url进行比较。

有人可以帮帮我吗?

我是一个带有SQL东西的完整菜鸟

在Symbian上使用Qt Quick 1.1

1 个答案:

答案 0 :(得分:0)

为什么不尝试像

这样的东西
function checkURL(url) {
    var exists
    db.readTransaction(function(tx) {
        var sql = "SELECT url FROM bookmarks WHERE url=? LIMIT 1";
        var rs = tx.executeSql(sql, [url])
        exists = rs.rows.length > 0
    })
    return exists
}

LIMIT 1子句将告诉数据库引擎在找到符合条件的第一行时停止搜索。

我自己没试过,但它应该有效。