cordova-sqlite から同期的にデータをフェッチすることは可能ですか?
caseTable
フィールド (ID、ケース名、日付)を持つテーブルがあります。そのテーブルの各行は、caseName フィールドにちなんで名付けられた別のテーブルに対応しています。テーブルをループして、caseTable
参照されているテーブル内の行数を取得する必要があります。
function onDeviceReady() {
db = window.openDatabase("Casepad", "1.0", "Casepad", 200000);
db.transaction(getallTableData, errorCB);
}
function insertData() {
db.transaction(createTable, errorCB, afterSuccessTableCreation);
}
// create table and insert some record
function createTable(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS CaseTable (id INTEGER PRIMARY KEY AUTOINCREMENT, CaseName TEXT unique NOT NULL ,CaseDate INTEGER ,TextArea TEXT NOT NULL)');
tx.executeSql('INSERT OR IGNORE INTO CaseTable(CaseName,CaseDate,TextArea) VALUES ("' + $('.caseName_h').val() + '", "' + $('.caseDate_h').val() + '","' + $('.caseTextArea_h').val() + '")');
}
// function will be called when an error occurred
function errorCB(err) {
navigator.notification.alert("Error processing SQL: " + err.code);
}
// function will be called when process succeed
function afterSuccessTableCreation() {
console.log("success!");
db.transaction(getallTableData, errorCB);
}
// select all from SoccerPlayer
function getallTableData(tx) {
tx.executeSql('SELECT * FROM CaseTable', [], querySuccess, errorCB);
}
function querySuccess(tx, result) {
var len = result.rows.length;
var t;
$('#folderData').empty();
for (var i = 0; i < len; i++) {
/* *************************************************************
* Here i need to call a synchronous method which returns the
* number of rows in the result.rows.item(i).CaseName table
* ************************************************************* */
$('#folderData').append(
'<li class="caseRowClick" id="' + result.rows.item(i).id + '" data-rel="popup" data-position-to="window">' + '<a href="#">' + '<img src="img/Blue-Folder.png">' + '<h2>' + result.rows.item(i).CaseName + t+'</h2>' + '<p>' + result.rows.item(i).TextArea + '</p>' + '<p>' + result.rows.item(i).CaseDate + '</p>' + '<span class="ui-li-count">' + i + '</span></a>' +
'<span class="ctrl togg"><fieldset data-role="controlgroup" data-type="horizontal" data-mini="true" ><button class="edit button_design">Edit</button><button class="del button_design">Delete</button></fieldset><span>'+'</li>'
);
}
$('#folderData').listview('refresh');
}
リストビューに「i」の値を表示する目的で、そのテーブル内の要素の数を表示する必要があります。この要素の「result.rows.item(i).CaseName」の要素数をカウントするクエリを呼び出す必要があるため、同期を呼び出す必要があります..?
例を挙げて...
DB 名Case Pad テーブル名 CaseTable
Let assume having entries in caseTable.
ID CaseName Case Date caseNote
1 Test 3/77/13 jgjgj
2 Test2 4/34/3 hsadkkadsh
Now I have two more table in DB
Test , Test2..
**Test** having entries like this
ID DocumentName Date Notes
1) ppp 7/33 asdhdfkdshf
2) asdjhad 9/44 dfjasgfsjfj
**Test2** having entries like this
ID DocumentName Date Notes
1) sad 7/4 asdhdfkdshf
2) assd 3/44 hhhhhh
3) asd 2/22 adgjad
Test 、 Test2 のエントリは 2 と 3 です。
ここで、CaseTable のデータをフェッチする必要があります。フェッチ中に、ケース名テーブル (Test、Test1) の要素の数をカウントする必要があります。ここだけ
function getallTableData(tx) {
tx.executeSql('SELECT * FROM CaseTable', [], querySuccess, errorCB);
}
function querySuccess(tx, result) {
var len = result.rows.length;
var t;
$('#folderData').empty();
for (var i = 0; i < len; i++) {
Here i need to call synchronize method which call the number of element in in that result.rows.item(i).CaseName and insert it in this table
****************************************************************************
$('#folderData').append(
'<li class="caseRowClick" id="' + result.rows.item(i).id + '" data-rel="popup" data-position-to="window">' + '<a href="#">' + '<img src="img/Blue-Folder.png">' + '<h2>' + result.rows.item(i).CaseName + t+'</h2>' + '<p>' + result.rows.item(i).TextArea + '</p>' + '<p>' + result.rows.item(i).CaseDate + '</p>' + '<span class="ui-li-count">' + i + '</span></a>' +
'<span class="ctrl togg"><fieldset data-role="controlgroup" data-type="horizontal" data-mini="true" ><button class="edit button_design">Edit</button><button class="del button_design">Delete</button></fieldset><span>'+'</li>'
);
}
$('#folderData').listview('refresh');
}
casename casedate case Note ,number of elements を印刷する必要がある ので、私のリストは次のようになります
Test 3/77/13 jgjgj 2
Test2 4/34/3 hsadkkadsh 3
その表に 2 と 3 を出力する方法...:( 質問をお願いします)