0

Android SQLite データベースのテーブルに値を挿入する際に問題があります。私はすでにいくつかのチュートリアルの例を適応させようとしましたが、役に立ちませんでした. 誰かが私のコードを見て、それを機能させるために何を変更する必要があるかを指摘してもらえますか? これが私のクラスのコードです:

public class Baza extends SQLiteOpenHelper {
SQLiteDatabase db;
static final String dbName ="MyDb";
static final int dbVersion = 1;

// tabela przepisy
static final String TabName = "Przepisy";
static final String TabCol1 = "id";
static final String TabCol2 = "Nazwa";
static final String TabCol3 = "Kategoria";

static final String dbCreate = "CREATE TABLE" + TabName + "(" + 
    TabCol1+ " INTEGER PRIMARY KEY, "+
    TabCol2+ " TEXT, " +
    TabCol3+ " TEXT)";

public Baza(Context context) {
    super(context, dbName, null, dbVersion);
    // TODO Auto-generated constructor stub
}

@Override
public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub
    db.execSQL(dbCreate);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    // TODO Auto-generated method stub
    db.execSQL("DROP TABLE IF EXISTS "+ TabName);
}

public boolean insert(String name, String cat)
{
    db = super.getWritableDatabase();
     ContentValues cv=new ContentValues();

       cv.put(TabCol2, name);
       cv.put(TabCol3, cat);

       long isAdded = db.insert(TabName, null, cv);
       if (isAdded == -1)       return false;
       else return true;
}
}

どんな助けにも感謝します。

Logcat エラー:

 I/Process(1289): Sending signal. PID: 1289 SIG: 9
 D/AndroidRuntime(1318): Shutting down VM
 W/dalvikvm(1318): threadid=1: thread exiting with uncaught exception (group=0x40015560)
 E/AndroidRuntime(1318): FATAL EXCEPTION: main
 E/AndroidRuntime(1318): java.lang.NullPointerException
 E/AndroidRuntime(1318):    at com.example.mojabaza.Baza.insert(Baza.java:60)
 E/AndroidRuntime(1318):    at com.example.mojabaza.Mojabaza$2.onClick(Mojabaza.java:45)
 E/AndroidRuntime(1318):    at android.view.View.performClick(View.java:2485)
 E/AndroidRuntime(1318):    at android.view.View$PerformClick.run(View.java:9080)
 E/AndroidRuntime(1318):    at android.os.Handler.handleCallback(Handler.java:587)
 E/AndroidRuntime(1318):    at android.os.Handler.dispatchMessage(Handler.java:92)
 E/AndroidRuntime(1318):    at android.os.Looper.loop(Looper.java:123)
 E/AndroidRuntime(1318):    at android.app.ActivityThread.main(ActivityThread.java:3683)
 E/AndroidRuntime(1318):    at java.lang.reflect.Method.invokeNative(Native Method)
 E/AndroidRuntime(1318):    at java.lang.reflect.Method.invoke(Method.java:507)
 E/AndroidRuntime(1318):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
 E/AndroidRuntime(1318):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
 E/AndroidRuntime(1318):    at dalvik.system.NativeStart.main(Native Method)
4

1 に答える 1

0

スペースがありませんAUTO INCREMENT。次の 2 つの単語かどうかわかりません。

"CREATE TABLE" + TabName + "(" + 
    TabCol1+ " INTEGER PRIMARY KEY AUTO INCREMENT, "+

使用する:

//    Added: v
"CREATE TABLE " + TabName + "(" + 
    TabCol1+ " INTEGER PRIMARY KEY, "+ // autoincrement is implied as well as `not null`

dbVersionエラーによっては、この新しいスキーマを構築するために 2に設定する必要がある場合があります。

于 2013-01-06T22:17:15.953 に答える