HTML5 웹 사이트에 대한 Sqlite 구현에 관한 몇 가지 질문이 있습니다.HTML5 SQLite Db 관련 질문
우선, openDatabaseSync 메서드를 호출하는 동기 데이터베이스를 사용하려하지만 작동하지 않는 것 같습니다. 누군가 이미 사용했기 때문에 나를 도울 수 있습니까?
또한 데이터베이스 쿼리에서 결과 반환을 처리하는 데 다소 어려움을 겪고 있습니다. 나는이 같은 책의 배열을 반환 내 기능을 싶습니다
function searchByKeywordId(kw_id, element) {
cleanSearch();
element.innerHTML = "No result...";
var books = new Array();
db.transaction(function (tx) {
tx.executeSql("SELECT b.BK_TITLE,b.BK_URL, b.BK_THUMBNAIL_URL FROM KEYWORDS k INNER JOIN CATALOG_ITEMS c on k.KW_ID = c.KW_ID INNER JOIN BOOKS b on c.BK_ID = b.BK_ID WHERE k.KW_ID = ? GROUP BY b.BK_TITLE,b.BK_URL",[kw_id], function (tx, results) {
if (results.rows.length > 0) {
var html = "";
for (var i = 0; i < results.rows.length; i++) {
var bookId = results.rows.item(i).BK_ID;
var bookUrl = results.rows.item(i).BK_URL;
var bookTitle = results.rows.item(i).BK_TITLE;
var bookThumbnailUrl = results.rows.item(i).BK_THUMBNAIL_URL;
var book = new Book(bookId,bookTitle,bookUrl,bookThumbnailUrl);
books.push(book);
/*html += "<div class='x_container' id='calibre:book:" + bookId + "'>";
html += "<div class='cover'>";
html += "</div></div>";*/
html += "<a href='" + bookUrl + "' title=\"" + bookTitle + "\" target='_new'><img src='" + bookThumbnailUrl + "'></a> ";
}
//html += "</div>";
element.innerHTML = html;
}
});
});
return books; }
을 분명히 작동하지 않습니다 콜백 메소드 내에서 도서를 추가 ... 당신은 내가 그것을 달성 할 수있는 방법을 볼 수 있나요? 그래서 내 데이터베이스 메서드에서 문서에 쓸 필요가 없을 것 ...
고마워!
추가 된 웹-SQL 태그 -이 HTML5의 일부가되지 않습니다. – Nickolay
동기 버전의 메소드가 스펙에 언급되어 있더라도 널리 지원되지 않는다는 것을 알고 있습니다. 나는 그것들을 직접 테스트했고, 예를 들어 Chrome v16.0.912.77은 동기 API (TypeError : "Object [object DOMWindow]에는 메소드 'openDatabaseSync'가 없음)를 지원하지 않습니다. 두 번째 질문에 대해서는 "executeSql"메서드가 생성 및 오류가 발생하지 않았습니까? 오류 콜백을 추가하고 오류가 발생했는지 확인하십시오. 또한 Chrome 개발자 도구의 리소스 탭에서 직접 실행하여 명령이 올바른지 확인할 수도 있습니다. –
@Gabobcat openDatabaseSync는 Chrome에 존재하지만이를 사용하려면 WebWorkers를 사용해야합니다 ... 그렇습니다. 내 쿼리가 작동하는 것 같습니다. – Farid