2016-04-26 8 views
0

私はangularJSでWEB-SQLを使用しています。アプリケーションが起動するたびに発生する問題は、アプリケーションのマスターデータをアップロードしようとするとエラーが発生します:UNIQUE制約は失敗しました:存在しない場合、web-sqlでマスターデータを一度だけアップロードしてください

この問題を次のロジックで解決しようとしていますが、これをやるのがベストプラクティスかどうかです。

データベースAPIを処理する際のベストプラクティスを参考にしてください。私のアプリケーションは、私はテーブルが存在するかどうかをチェックするために、このメソッドを呼び出したときに起動する は、ここで私は

function checkTableExist(){ 
    var query = "SELECT * from sqlite_master where type='table' and name = 'test'", 
     defer = $q.defer(); 
    db.transaction(function(tx){ 
     tx.executeSql(query,[], function(response){ 
      if(typeof(response.rows)){ 
       defer.resolve(false); 
      } 
      else{ 
       defer.resolve(true);  
      } 

     }, function(){ 
      defer.resolve(false); 
     }); 
    }); 
    return defer.promise; 
} 

をチェックしています。

結果がfalseの場合テーブルを作成してテーブルにデータを挿入しています。結果が真であれば、私はテーブルを作成し、これにデータを挿入したくありません。

私はこれを達成できません。

いずれのサポートも大きな助けになります。

ありがとうございました。

答えて

0

これは、あなたの質問に正確な答えはありませんが、あなたのエラーを削除することができます:UNIQUE制約に失敗しました:このようなあなたのSQLクエリを変更することで:

CREATE TABLE if not exists sqlite_master(); 
INSERT OR REPLACE INTO sqlite_master VALUES(); 

この方法あなたがするたびにアプリが起動同じデータを挿入することができます。 これがあなたを助けてくれることを願っています。

関連する問題