質問: openDatabase('AddressBook', '', 'AddressBook Database', 102400, function(db){ db.transaction(function (t) { //初期化用SQLの実行 t.executeSql( 'CREATE TABLE address_book(id INTEGER PRIMARY KEY AUTOINCREMENT, SIZE TEXT, CD TEXT, COLOR TEXT)'); },function(error){ //エラー時の処理 alert("エラーが発生しました。" + error.message); },function(){ //成功時の処理 alert("初期化成功"); }); }); function addRecordA(SIZE, CD) { db.transaction(function(tx) { tx.executeSql('INSERT INTO address_book(SIZE, CD) VALUES(?, CD,)', [SIZE, CD], function(tx, rs) { alert("保存に成功しました"); }, function(error) { alert("保存に失敗しました。原因:" + error.message); }); }); } function addRecordB(COLOR, CD) { db.transaction(function(tx) { tx.executeSql('INSERT INTO address_book(COLOR, CD) VALUES(?, ?)', [COLOR, CD], function(tx, rs) { alert("保存に成功しました"); }, function(error) { alert("保存に失敗しました。原因:" + error.message); }); }); } ``` ### 試したこと addRecordAとaddRecordBを使うそれぞれの画面では機能しており キャッシュの削除なども行いましたが、解決はされておりません。 良い手法をご存知の方がいれば、ご教授願えないでしょうか。
回答: 極めて単純な話で、ページごとに入力するカラムが違っていても jsファイル上でカラムを揃える必要があった、ということでした。 ``` function init(){ //データベースを開き、初期化を行う db = openDatabase('AddressBook', '', 'AddressBook Database', 102400, function(db){ db.transaction(function (t) { //初期化用SQLの実行 t.executeSql( 'CREATE TABLE address_book(id INTEGER PRIMARY KEY AUTOINCREMENT, SIZE TEXT, CD TEXT, COLOR TEXT)'); },function(error){ //エラー時の処理 alert("エラーが発生しました。" + error.message); },function(){ //成功時の処理 alert("初期化成功"); }); }); function addRecord(SIZE, CD, COLOR) { db.transaction(function(tx) { tx.executeSql('INSERT INTO address_book(SIZE, CD, COLOR) VALUES(?, ?, ?)', [SIZE, CD, COLOR], function(tx, rs) { alert("保存に成功しました"); }, function(error) { alert("保存に失敗しました。原因:" + error.message); }); }); } ```