2017-04-03 30 views
0

私はイオン1を初めて使用しています。私はブラウザで自分のアプリケーションをテストしても問題ありません。私はsqliteを使用しています。私にはフォームがあります。 1つのテキスト入力フィールドを空のままにすると、データがデータベーステーブルに追加されます。それはまさに私が欲しいものです。しかし、それはデバイスでは動作しません。私は空のフィールドを残したときはいつでも、それは以下のエラーを示していますsqlite3_stepに失敗しました:NOT NULL制約に失敗しました

Object {message: "sqlite3_step failure: NOT NULL constraint failed: items.barcode", code: 6} 

は、ここに私のコードスニペットです:

​​
+1

'barcode'カラムにNOT NULL制約がある以前のバージョンのテーブルをお持ちでしたか? –

+0

はい、私は持っていました。 –

+0

何をすべきか? @CL。 –

答えて

1

CREATE TABLE IF NOT EXISTS

if ($scope.item.itemname && $scope.item.soldby && $scope.item.price) { 
         var query = "INSERT into items (itemname,category,soldby,price,sku,barcode) VALUES(?,?,?,?,?,?)"; 

         $cordovaSQLite.execute(db, query, [$scope.item.itemname, $scope.item.category, $scope.item.soldby, $scope.item.price, $scope.item.sku, $scope.item.barcode,]) 
          .then(function (result) { 
           console.log($scope.item.itemname); 
           console.log($scope.item.category); 
           console.log($scope.item.soldby); 
           console.log($scope.item.price); 
           console.log($scope.item.sku); 
           console.log("Printing barcode"); 
           console.log($scope.item.barcode); 
           console.log($scope.item.total); 

           //ITEM ADDED SUCCESS POPUP STARTS     




           //ITEM ADDED SUCCESS POPUP ENDS 


          }, function (error) { 
           console.log(error); 

          }); 

         // $scope.item = { 
         //  itemname: $scope.item.itemname, 
         // }; 
         $state.go('menu.allItems'); 
        } 

そして、ここでは、私は、テーブルを作成したコードです別の構造を持っていても、同じ名前の表がすでに存在する場合は、何も変更されません。あなたは常に古いテーブルを取り払うことを保証するために

、使用:

DROP TABLE IF EXISTS items; 
CREATE TABLE items ([...]); 

これはまた、すべての古いデータを削除します。テーブル定義を更新するが古いデータを保持する場合は、use a temporary table to do the conversionにする必要があります。

+0

他の方法はありますか?私のアプリは古いデータを保持する必要があるので。私がテーブル構造を変更した後にドロップテーブルを実行してから、 "ドロップテーブル"を削除するとどうなりますか? –

+0

また、私のアプリがブラウザでうまく動作するのはなぜですか、私はデバイスやエミュレータではないことを知りたいと思います。 –

+0

このリンクは、テーブルの変更方法を示しています。古いデータベースがある場合、アプリケーションは動作しません。 –

関連する問題