2012-04-02 9 views
0

Wenn ich das erste Mal die eine Tabelle zu erstellen, ich diese Fehlermeldung immer erhalten:Android erstellen Tabellenfehler

SQLite zurückgegeben: Fehlercode = 1, msg = AUTOINCREMENT darf nur auf ein INTEGER PRIMARY KEY

Mein Code sieht wie folgt aus:

// debuggin Kennung private static final String TAG = DatabaseOpenHandler.class.getSimpleName();

// name and verison of the database 
private static final String DATABASE_NAME = "OpenConfApp"; 
private static final int DATABASE_VERSION = 1; 

// name and attributes of the table notes 
public static final String TABLE_NAME_NOTES = "notes"; 
public static final String _NOTE_ID = "_noteId"; 
public static final String NOTE_CONFERENCE = "conferenceId"; 
public static final String NOTE_DATE = "dateInMillis"; 
public static final String NOTE_TEXT = "noteText"; 

// create table notes 
public static final String TABLE_NOTES_CREATE = "CREATE TABLE " 
     + TABLE_NAME_NOTES + " (" + _NOTE_ID 
     + "INTEGER PRIMARY KEY AUTOINCREMENT, " + NOTE_CONFERENCE 
     + " INTEGER, " + NOTE_DATE + " INTEGER, " + NOTE_TEXT 
     + " INTEGER);"; 

// drop table notes 
public static final String TABLE_NOTES_DROP = "DROP TABLE IF EXIST " 
     + TABLE_NAME_NOTES; 

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

@Override 
public void onCreate(SQLiteDatabase db) { 
    Log.d(TAG, "onCreate called"); 
    db.execSQL(TABLE_NOTES_CREATE); 
} 

Sorry, ich bin neu in der Android-Programmierung.

Antwort

1

Ihr Code korrekt ist einfach Sie ein Leerzeichen vor dem ersten integer statement.Write dies verpasst:

public static final String TABLE_NOTES_CREATE = "CREATE TABLE " 
    + TABLE_NAME_NOTES + " (" + _NOTE_ID 
    + " INTEGER PRIMARY KEY AUTOINCREMENT, " + NOTE_CONFERENCE 
    + " INTEGER, " + NOTE_DATE + " INTEGER, " + NOTE_TEXT 
    + " INTEGER);"; 
+0

, warum Sie mich wiederholen? -_- – Joe

+0

@ sebbl.sche Skandal. Ich war der Erste, der diese Antwort gab. – Joe

+0

sry lieber, aber ich habe wirklich nicht deine Antwort gesehen, die Sie geschrieben haben, da mein Netz langsam war. wirklich sry. – Dhruvisha

0

AUTOINCREMENT wird nicht für Integer-Primärschlüssel benötigt, seine Semantik enthält bereits einen "Primärschlüssel", siehe here.

1
+ "INTEGER PRIMARY KEY AUTOINCREMENT, " + NOTE_CONFERENCE 

verpassten Sie ein Leerzeichen dort über ...

+ " INTEGER PRIMARY KEY AUTOINCREMENT, " + NOTE_CONFERENCE 
0

Dies ist ein Problem Tippfehler zurückzuführen ist es keinen Raum zwischen

NOTE_ID und INTEGER PRIMARY KEY AUTOINCREMENT

ist
public static final String TABLE_NOTES_CREATE = "CREATE TABLE " 
     + TABLE_NAME_NOTES + " (" + _NOTE_ID 
     + "INTEGER PRIMARY KEY AUTOINCREMENT, " + NOTE_CONFERENCE 
     + " INTEGER, " + NOTE_DATE + " INTEGER, " + NOTE_TEXT 
     + " INTEGER);"; 

sollten Sie den Abstand zwischen ihnen geben

public static final String TABLE_NOTES_CREATE = "CREATE TABLE " 
     + TABLE_NAME_NOTES + " (" + _NOTE_ID 
     + " INTEGER PRIMARY KEY AUTOINCREMENT, " + NOTE_CONFERENCE 
     + " INTEGER, " + NOTE_DATE + " INTEGER, " + NOTE_TEXT 
     + " INTEGER);";