2016-03-23 11 views
0

新しいデータを入力しようとすると問題が発生します。データベースにアイテムを保存中にエラーが発生しました。アンドロイドスタジオ

マイコード:

ThoughtManager:

public long createThought(Thought thought) // TWORZE NOWY ELEMENT W BAZIE DANYCH!!! 
{ 
    contentValues.put(ThoughtDbHelper.INDEXNUMBER, thought.getIndexNumber()); 
    contentValues.put(ThoughtDbHelper.NAME, thought.getName()); 
    contentValues.put(ThoughtDbHelper.TIME, thought.getTime()); 
    contentValues.put(ThoughtDbHelper.DATE, thought.getDate()); 
    contentValues.put(ThoughtDbHelper.GROUPCODE, thought.getGroupCode()); 
    contentValues.put(ThoughtDbHelper.IDPRINTFINGER, thought.getIDPrintfinger()); 
    contentValues.put(ThoughtDbHelper.AMOUNTOFPRESENCE, thought.getAmountOfPresence()); 

    return db.insert(ThoughtDbHelper.TABLE_NAME, null, contentValues); 
} 

DbHelper:クラスの

//Zmienne do mojej bazy danych 
static final String INDEXNUMBER="indexnumber"; 
static final String NAME="name"; 
static final String GROUPCODE="groupcode"; 
static final String IDPRINTFINGER="idprintfinger"; 
static final String KEY="_id"; 
static final String AMOUNTOFPRESENCE="amountofpresence"; 
static final String DATE="date"; 
static final String TIME="time"; 
static final String TABLE_NAME="thought_tbl"; 
static final String DATABASE_NAME="thought_db.sql"; // nasza baza danych 
static final int DATABASE_VERSION = 1; // wesja naszej bazy danych 

private String QUERY_STRING="CREATE TABLE " + TABLE_NAME + " ("+KEY 
     + " INTEGER PRIMARY KEY AUTOINCREMENT , "+ INDEXNUMBER 
     + " TEXT NOT NULL, " + NAME + " TEXT NOT NULL , " + TIME 
     + " TEXT, " + DATE + " TEXT, " + GROUPCODE + " TEXT, " + IDPRINTFINGER 
     + " TEXT, " + AMOUNTOFPRESENCE 
     + " TEXT)"; 

そしてmetod私は、新しいデータを追加してみてください。ここでは

case R.id.btnAddThought: 
      if(requestReply!=null) 
      { 
       idPrintfinger=requestReply; 
      } 
      index=etIndex.getText().toString(); // Pobieram z pola tekstowe wpisane znaki i zapisuje je do zmiennej 
      name=etName.getText().toString(); 
      groupcode=etGroup.getText().toString(); 

      thougt.setIndexNumber(index); // zapisuje w bazie poszczegolne elementy 
      thougt.setName(name); 
      thougt.setTime(time); 
      thougt.setDate(date); 
      thougt.setGroupCode(groupcode); 
      thougt.setIDPrintfinger(idPrintfinger); 
      thougt.setAmountOfPresence(amountOfPresence); 

      manager.openForWrite(); // właczma odpcje zpaisywania na DYSK! 
      long res=manager.createThought(thougt); // Zapisuje dane na DYSKU! 
      if(res!=-1) 
      { 
       ClearFields(); 
      } 
      break; 

は私ですまだLogCatを編集するpropably私は盲目またはSTH

3-23 18:00:27.084 24591-24591/com.example.iorwet.thoghtaplication  

E/SQLiteLog: (1) table thought_tbl has no column named groupcode 
03-23 18:00:27.084 24591-24591/com.example.iorwet.thoghtaplication  

E/SQLiteDatabase: Error inserting groupcode=dasdasdada indexnumber=asdasddsdasd time=00:00 amountofpresence=0 idprintfinger=000 date=01.01.1990 name=asdada 
                       android.database.sqlite.SQLiteException: table thought_tbl has no column named groupcode (code 1): , while compiling: INSERT INTO thought_tbl(groupcode,indexnumber,time,amountofpresence,idprintfinger,date,name) VALUES (?,?,?,?,?,?,?) 
                        at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
                        at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) 
                        at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500) 
                        at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
                        at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
                        at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) 
                        at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1467) 
                        at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339) 
                        at com.example.iorwet.thoghtaplication.ThoughtManager.createThought(ThoughtManager.java:74) 
                        at com.example.iorwet.thoghtaplication.AddThought.onClick(AddThought.java:138) 
                        at android.view.View.performClick(View.java:4438) 
                        at android.view.View$PerformClick.run(View.java:18422) 
                        at android.os.Handler.handleCallback(Handler.java:733) 
                        at android.os.Handler.dispatchMessage(Handler.java:95) 
                        at android.os.Looper.loop(Looper.java:136) 
                        at android.app.ActivityThread.main(ActivityThread.java:5001) 
                        at java.lang.reflect.Method.invokeNative(Native Method) 
                        at java.lang.reflect.Method.invoke(Method.java:515) 
                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
                        at dalvik.system.NativeStart.main(Native Method) 

答えて

0

何列「group」は、あなたのテーブルthought_tbl ではありませんが、あなたはその列のためのいくつかの値を挿入しようとしている、このコードの問題で問題を抱えています。

contentValues.put(ThoughtDbHelper.GROUP, thought.getGroup()); 

なぜSQLiteExceptionが例外になりますか。

+0

私のコードを編集します。私はThoughtDbHelperに間違ったコードを入れました。もう一度見ていただけますか – Iorwet

+0

まだ同じエラーです。 contentValues.put(ThoughtDbHelper.GROUP、thought.getGroup())の値を挿入しています。しかし、あなたはカラム 'groupcode'を持っています –

+0

私は自分のコードに変更しましたが、うまくいきませんでした/私は両方のグループコードを持っています – Iorwet

0

キーワード「グループ」という名前の列があるようです。

The SQL standardは、表、索引、列、データベース、ユーザー定義関数、照合、仮想表モジュール、またはその他の名前付きオブジェクトの名前として使用できない膨大な数のキーワードを指定します。

列名を別のものに変更してみてください。

+0

彼はすでに列を "groupcode"に変更してから、彼は問題に直面しています。 –

関連する問題