SQLite INSERT INTO > no such table

Wenn garantiert immer ein Datensatz kommt, braucht man's nicht, stimmt.
Aber wenn mal keiner zurück kommt hat man sonst 'ne Exception...
 
Hallo zusammen,

Ich bin noch ganz neu im Android Programmieren und bei android-hilfe.de. Ich habe dasselbe Problem wie der Threadersteller, sobald ich etwas in meine SQLite Database eintragen will, kommt "(1) no such table: TestTable" und ich kann meinen Fehler einfach nicht finden. Hier ist mein Code:
Code:
public class DatabaseAdapter {
	
	DatabaseHelper databaseHelper;
	public DatabaseAdapter(Context context){
		databaseHelper=new DatabaseHelper(context);
	}
	public long insertData(String name, String pw){
		SQLiteDatabase db = databaseHelper.getWritableDatabase();
		ContentValues contentValues = new ContentValues();
		contentValues.put(DatabaseHelper.NAME, name);
		contentValues.put(DatabaseHelper.PASSWORD, pw);
		long id=db.insert(DatabaseHelper.TABLE_NAME, null, contentValues);
		return id;
	}

	static class DatabaseHelper extends SQLiteOpenHelper {
		private static final String DATABASE_NAME = "MyDatabase";
		private static final int DATABASE_VERSION = 1;
		private static final String TABLE_NAME = "TestTable";
		private static final String UID = "_id";
		private static final String NAME = "Name";
		private static final String PASSWORD = "Password";
		private static final String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME
				+ " (" + UID + " INTEGER PRIMARY KEY AUTOINCREMENTED, " + NAME
				+ " VARCHAR(255), " + PASSWORD + " VARCHAR(255));";


		public DatabaseHelper(Context context) {
			super(context, DATABASE_NAME, null, DATABASE_VERSION);
		}

		@Override
		public void onCreate(SQLiteDatabase db) {
			try {
				db.execSQL(CREATE_TABLE);
				
			} catch (SQLException e) {
				e.printStackTrace();
			}

		}
	}
}
Und in der Main Activity habe ich
Code:
	DatabaseAdapter databaseAdapter;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		databaseAdapter = new DatabaseAdapter(this);
		long id = databaseAdapter.insertData("user", "1234");
	}
stehen. Erkennt ihr meinen Fehler? Vielen Dank schonmal im Voraus!

Liebe Grüße, Beppo Levi
 
Kann es sein, dass du bei einem vorherigen Lauf die Tabelle garnicht (mit diesem Namen) angelegt hattest und deshalb das onCreate (zugunsten von onUpgrade) nicht zum Zuge kommt?

Ansonsten wie immer: CatLog, bitte. :D
 
Dürfte nicht der Fall sein, habe
Code:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
	db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME + ";");
	onCreate(db);
	}
mit drin, wollte sie nur der Übersichtlichkeit wegen hier nicht mit rein stellen, da sie ja eh nicht aufgerufen wird.
Also das hier ist der komplette
CatLog:
10-07 09:37:14.587: D/dalvikvm(23637): GC_FOR_ALLOC freed 53K, 5% free 2890K/3024K, paused 56ms, total 59ms
10-07 09:37:14.597: I/dalvikvm-heap(23637): Grow heap (frag case) to 4.873MB for 2073616-byte allocation
10-07 09:37:14.647: D/dalvikvm(23637): GC_FOR_ALLOC freed 2K, 3% free 4912K/5052K, paused 47ms, total 47ms
10-07 09:37:15.957: D/gralloc_goldfish(23637): Emulator without GPU emulation detected.
10-07 09:37:21.217: D/dalvikvm(23637): GC_FOR_ALLOC freed 12K, 2% free 5054K/5144K, paused 1051ms, total 1094ms

10-07 09:37:23.397: I/Choreographer(23637): Skipped 238 frames! The application may be doing too much work on its main thread.
10-07 09:37:24.407: I/Choreographer(23637): Skipped 34 frames! The application may be doing too much work on its main thread.
10-07 09:37:26.817: I/Choreographer(23637): Skipped 69 frames! The application may be doing too much work on its main thread.

10-07 09:37:27.877: D/dalvikvm(23637): GC_FOR_ALLOC freed 37K, 2% free 5778K/5892K, paused 219ms, total 228ms
10-07 09:37:28.987: E/SQLiteLog(23637): (1) near "AUTOINCREMENTED": syntax error
10-07 09:37:28.987: W/System.err(23637): android.database.sqlite.SQLiteException: near "AUTOINCREMENTED": syntax error (code 1): , while compiling: CREATE TABLE TestTable (_id INTEGER PRIMARY KEY AUTOINCREMENTED, Name VARCHAR(255), Password VARCHAR(255));
10-07 09:37:29.037: W/System.err(23637): at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
10-07 09:37:29.037: W/System.err(23637): at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
10-07 09:37:29.047: W/System.err(23637): at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
10-07 09:37:29.047: W/System.err(23637): at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
10-07 09:37:29.047: W/System.err(23637): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
10-07 09:37:29.047: W/System.err(23637): at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
10-07 09:37:29.047: W/System.err(23637): at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1672)
10-07 09:37:29.047: W/System.err(23637): at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1603)
10-07 09:37:29.047: W/System.err(23637): at de.example.test.DatabaseAdapter$DatabaseHelper.onCreate(DatabaseAdapter.java:49)
10-07 09:37:29.057: W/System.err(23637): at de.example.test.DatabaseAdapter$DatabaseHelper.onUpgrade(DatabaseAdapter.java:61)
10-07 09:37:29.057: W/System.err(23637): at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:257)
10-07 09:37:29.057: W/System.err(23637): at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
10-07 09:37:29.057: W/System.err(23637): at de.example.test.DatabaseAdapter.insertData(DatabaseAdapter.java:17)
10-07 09:37:29.057: W/System.err(23637): at de.example.test.MainActivity.onCreate(MainActivity.java:22)
10-07 09:37:29.057: W/System.err(23637): at android.app.Activity.performCreate(Activity.java:5231)
10-07 09:37:29.057: W/System.err(23637): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
10-07 09:37:29.057: W/System.err(23637): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
10-07 09:37:29.057: W/System.err(23637): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
10-07 09:37:29.057: W/System.err(23637): at android.app.ActivityThread.access$800(ActivityThread.java:135)
10-07 09:37:29.057: W/System.err(23637): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
10-07 09:37:29.057: W/System.err(23637): at android.os.Handler.dispatchMessage(Handler.java:102)
10-07 09:37:29.057: W/System.err(23637): at android.os.Looper.loop(Looper.java:136)
10-07 09:37:29.057: W/System.err(23637): at android.app.ActivityThread.main(ActivityThread.java:5017)
10-07 09:37:29.057: W/System.err(23637): at java.lang.reflect.Method.invokeNative(Native Method)
10-07 09:37:29.057: W/System.err(23637): at java.lang.reflect.Method.invoke(Method.java:515)
10-07 09:37:29.057: W/System.err(23637): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
10-07 09:37:29.057: W/System.err(23637): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
10-07 09:37:29.057: W/System.err(23637): at dalvik.system.NativeStart.main(Native Method)

10-07 09:37:29.257: E/SQLiteLog(23637): (1) no such table: TestTable
10-07 09:37:29.327: E/SQLiteDatabase(23637): Error inserting Name=user Password=1234
10-07 09:37:29.327: E/SQLiteDatabase(23637): android.database.sqlite.SQLiteException: no such table: TestTable (code 1): , while compiling: INSERT INTO TestTable(Name,Password) VALUES (?,?)
10-07 09:37:29.327: E/SQLiteDatabase(23637): at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
10-07 09:37:29.327: E/SQLiteDatabase(23637): at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
10-07 09:37:29.327: E/SQLiteDatabase(23637): at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
10-07 09:37:29.327: E/SQLiteDatabase(23637): at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
10-07 09:37:29.327: E/SQLiteDatabase(23637): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
10-07 09:37:29.327: E/SQLiteDatabase(23637): at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
10-07 09:37:29.327: E/SQLiteDatabase(23637): at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1467)
10-07 09:37:29.327: E/SQLiteDatabase(23637): at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339)
10-07 09:37:29.327: E/SQLiteDatabase(23637): at de.example.test.DatabaseAdapter.insertData(DatabaseAdapter.java:21)
10-07 09:37:29.327: E/SQLiteDatabase(23637): at de.example.test.MainActivity.onCreate(MainActivity.java:22)
10-07 09:37:29.327: E/SQLiteDatabase(23637): at android.app.Activity.performCreate(Activity.java:5231)
10-07 09:37:29.327: E/SQLiteDatabase(23637): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
10-07 09:37:29.327: E/SQLiteDatabase(23637): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
10-07 09:37:29.327: E/SQLiteDatabase(23637): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
10-07 09:37:29.327: E/SQLiteDatabase(23637): at android.app.ActivityThread.access$800(ActivityThread.java:135)
10-07 09:37:29.327: E/SQLiteDatabase(23637): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
10-07 09:37:29.327: E/SQLiteDatabase(23637): at android.os.Handler.dispatchMessage(Handler.java:102)
10-07 09:37:29.327: E/SQLiteDatabase(23637): at android.os.Looper.loop(Looper.java:136)
10-07 09:37:29.327: E/SQLiteDatabase(23637): at android.app.ActivityThread.main(ActivityThread.java:5017)
10-07 09:37:29.327: E/SQLiteDatabase(23637): at java.lang.reflect.Method.invokeNative(Native Method)
10-07 09:37:29.327: E/SQLiteDatabase(23637): at java.lang.reflect.Method.invoke(Method.java:515)
10-07 09:37:29.327: E/SQLiteDatabase(23637): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
10-07 09:37:29.327: E/SQLiteDatabase(23637): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
10-07 09:37:29.327: E/SQLiteDatabase(23637): at dalvik.system.NativeStart.main(Native Method)


Der ursprüngliche Beitrag von 15:51 Uhr wurde um 15:54 Uhr ergänzt:

Ouh, ich seh gerade meinen Fehler, habe AUTOINCREMENTED anstatt AUTOINCREMENT geschrieben :D
 

Ähnliche Themen

R
Antworten
6
Aufrufe
1.013
swa00
swa00
5
Antworten
5
Aufrufe
1.208
jogimuc
J
Justice
Antworten
4
Aufrufe
1.674
Justice
Justice
Zurück
Oben Unten