2014-11-26 12 views
0

qml에서 SQLLite (자바 스크립트 생성) 데이터베이스를 읽고 해당 문자열 (웹 주소는 내 경우에는 일치)과 일치하는 일치 문자열 함수를 만들려고합니다. 이 내 데이터베이스 파일 코드 :SQLight 데이터베이스에서 QML 문자열을 비교하는 방법

.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()} 
} 

내가 뭔가를 만들고 싶어했다 기능 checkUrl (URL) {

경우 (dbvalues ​​== URL) { 반환 사실 } 다른 {반환 false}

} }

그러나 테이블에서 모든 데이터를 읽고 함수에서 주어진 URL과 비교하는 방법을 모르겠습니다.

누군가 나를 도울 수 있습니까? 심비안

에 Qt는 빠른 1.1을 사용하여

나는
+0

게시 한 코드가이를 수행하는 데 필요한 모든 기능을 갖추고 있기 때문에 다소 이상하게 보입니다. 'executeSql()'을 사용하여 데이터를 얻었 으면'rs.rows.thenameoffield (number) .attribute'를 호출하여 참조 할 수 있습니다. 여기서 number는 특정 결과를 나타내는 값입니다. – Nadarian

+0

나는 모든 항목에 대해 검사하려고했습니다. rs.rows.url (1)과 같은 데이터베이스의 URL .attribute가 'rs.rows'를 반환합니다. [undefined]가 객체가 아닙니다. 왜 내가 SQL 작업에 멍청하다고 말했습니까? – Paul

+0

아마 SQL 요청이 잘못되었습니다. f.e.에서 몇 가지 기본 사항을 얻으십시오. wc3schools 및 적절한 요청을하려고합니다. – Nadarian

답변

0

은 왜 중지 DB 엔진을 말할 것이다

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 조항 같은 것을 시도하지 않는 SQL 물건과 함께 완전한 멍청한 놈이야 조건에 맞는 첫 번째 행을 찾으면 검색합니다.

본인이 직접 시도하지 않았지만 제대로 작동해야합니다.