2017-05-15 9 views
-2

おはようございます、毎回私はアイテム名、アイテムの価格とアイテムの説明を保存し、私のアプリは自動的にクラッシュし、メイン画面に移動します。これはエラーです。私を助けてもらえますか?バーコードスキャナAndroid Sqlite

E/AndroidRuntime:致命的な例外:メイン プロセス:app.num.barcodescannerproject、PID:15141 android.database.sqlite.SQLiteException:認識できないトークン: "8850007011743jumel50wew"(コード1)、 コンパイル中:INSERT INTOスキャン結果VALUES(8850007011743jumel50wew); android.database.sqlite.SQLiteConnection.prepareでandroid.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:906) でandroid.database.sqlite.SQLiteConnection.nativePrepareStatement(ネイティブ 方法) (SQLiteConnection.javaで 。 android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)android.database.sqlite.SQLiteProgramで 。(SQLiteProgram.java:58) android.database.sqlite.SQLiteStatement。で(SQLiteStatementにおける517) 。 java:31) android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1704) android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1635) (アプリケーションで) num.barcodescannerproject.popupDialouge $ 1.onClick(popupDialouge.java:36) android.view.View.performClick(View.java:4909) android.view.View $ PerformClick.run(View.java:20390) アンドロイドでandroid.os.Looper.loopでandroid.os.Handler.dispatchMessage(Handler.java:104) でandroid.os.Handler.handleCallback(Handler.java:815) (Looper.java:194) で.app.ActivityThread.main(ActivityThread.java:5877) at java.lang.reflect.Method.invoke(ネイティブメソッド) at java.lang.reflect.Method.invoke(Method.java:372) at com。 android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1020) at com.android.internal.os.ZygoteInit.mai n(ZygoteInit.java:815) I/Process:シグナルを送信しています。 PID:15141 SIG:9アプリケーションが終了しました。私はあなたが、挿入のために間違った方法を使用している怖い

これは私のコード

save.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      SQLiteDatabase db = openOrCreateDatabase("barcodescan",MODE_PRIVATE,null); 
      db.execSQL("CREATE TABLE IF NOT EXISTS scanresults(barcode VARCHAR,item VARCHAR,price VARCHAR ,note VARCHAR);"); 
      db.execSQL("INSERT INTO scanresults VALUES("+Barcode+item.getText().toString()+itemPrice.getText().toString()+itemNote.getText().toString()+");"); 
      Toast.makeText(popupDialouge.this, "Item Saved", Toast.LENGTH_SHORT).show(); 
      finish(); 
     } 
    }); 
    cancel.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      finish(); 
     } 
    }); 
+0

どれアップデートを助ける???? –

答えて

1

では、ボタンクリック内のメソッドをmethods.Add、そして例の下に​​従ってください。

public void InsertScanResult(String barcodeItem,String itemPrice,String itemNote) 
{ 
    SQLiteDatabase db = this.getWritableDatabase(); 
    ContentValues cv=new ContentValues(); 
    cv.put("BarCodeColumnNamed", barcodeItem); 
    cv.put("PriceColumnName",itemPrice); 
    cv.put("ItemColumnName", itemNote); 
    db.insert("YourTableNamed", null, cv); 
} 

あなたはAndroid SQLite Database Tutorial

+1

@ Jumel HermosoこれはSQLiteを使い始めるために非常に便利です。 –

0

から例を得ることができ、私はあなたがカンマを忘れてしまったと思う:

db.execSQL("INSERT INTO scanresults VALUES('"Barcode+ "', '" +item.getText().toString()+"', '" + itemPrice.getText().toString()+"', '" +itemNote.getText().toString()+"');");

0

私はあなたのSQL文

の内側にあなたの文字列を引用する必要があると思います参照:this answer

0

db.execSQL()を使用してrawステートメントを実行する代わりに、最も好ましい組み込みメソッドdb.insert()insertContentValuesを使用する方が優れています。以下のように

更新しますonClick()方法:

@Override 
public void onClick(View v) { 
    SQLiteDatabase db = openOrCreateDatabase("barcodescan",MODE_PRIVATE,null); 

    db.execSQL("CREATE TABLE IF NOT EXISTS scanresults(barcode VARCHAR, item VARCHAR, price VARCHAR , note VARCHAR);"); 

    // Data to be inserted 
    ContentValues values = new ContentValues(); 
    values.put("barcode", Barcode); 
    values.put("item", item.getText().toString()); 
    values.put("price", itemPrice.getText().toString()); 
    values.put("note", itemNote.getText().toString()); 

    // Insert data 
    db.insert("scanresults", null, values); 

    Toast.makeText(popupDialouge.this, "Item Saved", Toast.LENGTH_SHORT).show(); 
    finish(); 
} 

希望これは〜