Ошибка вставки Android SQLite - PullRequest
       1

Ошибка вставки Android SQLite

2 голосов
/ 25 ноября 2011

У меня ошибка, которую я не могу понять. Надеюсь, вы можете помочь!

Я создаю таблицу имен групп с уникальным идентификатором, который является первичным ключом.

public class GroupDatabaseAdapter {

public static final String KEY_ID = "id";
public static final String KEY_NAME = "name";
private static final String DATABASE_TABLE = "groep";
private Context context;
private SQLiteDatabase database;
private GroupDatabaseHandler dbHandler;

public GroupDatabaseAdapter(Context context) {
    this.context = context;
}

public GroupDatabaseAdapter open() throws SQLException {
    dbHandler = new GroupDatabaseHandler(context);
    database = dbHandler.getWritableDatabase();
    return this;
}

public void close() {
    dbHandler.close();
}

/**
 * Create a new group If the group is successfully created return the new
 * rowId for that note, otherwise return a -1 to indicate failure.
 */
public long createGroup(long id, String name) 
{
    ContentValues values = createContentValues(id, name);

    return database.insert(DATABASE_TABLE, null, values);
}
/**
 * Return a Cursor over the list of all groups in the database
 * 
 * @return Cursor over all groups
 */
public Cursor fetchAllGroups() {
    return database.query(DATABASE_TABLE, new String[] { KEY_ID,
            KEY_NAME }, null, null, null,
            null, null);
}

private ContentValues createContentValues(Long id, String name) {
    ContentValues values = new ContentValues();
    values.put(KEY_ID, id);
    values.put(KEY_NAME, name);
    return values;
}
}



public class GroupDatabaseHandler extends SQLiteOpenHelper {

private static final String DATABASE_NAME = "groups.db";

private static final int DATABASE_VERSION = 1;

// Database creation sql statement
private static final String DATABASE_CREATE = "CREATE TABLE lesson (id INTEGER PRIMARY KEY NOT NULL , name TEXT NOT NULL);";

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

@Override
public void onCreate(SQLiteDatabase database) 
{
    database.execSQL(DATABASE_CREATE);
}

}

Я вызываю эти классы из другого класса со следующим кодом:

GroupDatabaseAdapter groupDb = new GroupDatabaseAdapter(this).open();
long id = groupDb.createGroup(641, "3 bac group 2");
System.out.println(id);
id = groupDb.createGroup(642, "3 bac group 3");
System.out.println(id);

Я получаю ошибку

11-24 23:08:07.036: I/Database(11436): sqlite returned: error code = 1, msg = near "group": syntax error
11-24 23:08:07.075: E/Database(11436): Error inserting id=1 name=3 bac group 2
11-24 23:08:07.075: E/Database(11436): android.database.sqlite.SQLiteException: near "group": syntax error: , while compiling: INSERT INTO group(id, name) VALUES(?, ?);

В той же программе я создал другую таблицу, которая работает. Единственная разница между этой таблицей и этой - в первичном ключе. В другой таблице он увеличивается автоматически, здесь я хочу, чтобы rowid был идентификатором группы. Надеюсь, кто-то увидит мою ошибку.

Хорошо, я изменил группу в groep (голландский для группы), и теперь я получаю эти ошибки:

11-25 00:09:10.812: I/Database(457): sqlite returned: error code = 1, msg = no such table: groep
11-25 00:09:11.082: E/Database(457): Error inserting _id=1 name=3 bac group 2
11-25 00:09:11.082: E/Database(457): android.database.sqlite.SQLiteException: no such table: groep: , while compiling: INSERT INTO groep(_id, name) VALUES(?, ?);

Ура! Kat

Ответы [ 2 ]

5 голосов
/ 25 ноября 2011

Просто догадка: попробуйте переименовать таблицу базы данных в нечто отличное от «group» (например, «groups»).Я почти уверен, что «группа» является зарезервированным ключевым словом в SQL.

0 голосов
/ 25 ноября 2011

Вы создали таблицу под названием урок и вставили в таблицу с именем groep.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...