Android SQLite 数据库 Table
Android SQLiteDatabase Table
我正在开发一个 android 应用程序,但我遇到了无法解决的问题。我希望你们能帮助我。
我收到此错误:
android.database.sqlite.SQLiteException: table FBFriends has no column named id (code 1): , while compiling: INSERT INTO FBFriends(id,name) VALUES (?,?)
众所周知,错误是找不到 table。但是我做了table。
public DatabaseManager(Context context) {
//referentie naar cursus
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
//SQL for creating a new table
Log.d(TAG, "Tabel gemaakd");
String CREATE_DATABASE_TABLE ="CREATE TABLE Friends (id VARCHAR(255) PRIMARY KEY not null , name VARCHAR(255) )";
db.execSQL(CREATE_DATABASE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older database if existed
db.execSQL("DROP TABLE IF EXISTS Friends");
Log.d(TAG, "Tabel verwijdert");
// create new table
this.onCreate(db);
}
这是向数据库添加数据的函数。
private static final String TABLE_FBFriends = "Friends";
private static final String KEY_ID = "id";
private static final String KEY_Name = "name";
private static final String[] COLUMNS = {KEY_ID,KEY_Name};
public boolean addPersons(ArrayList<Person> listOfPersons)
{
Log.d(TAG, "add");
//get reference to writable DB
SQLiteDatabase db = this.getWritableDatabase();
Log.d(TAG, "toevoegen add");
//create ContentValues to add key "column"/value
for (Person p:listOfPersons) {
Log.d(TAG, "FOREACH");
ContentValues values = new ContentValues();
values.put(KEY_ID, p.getId());
Log.d(TAG, "first VALUE");
values.put(KEY_Name, p.getName()); // get title
Log.d(TAG, "second VALUE");
Log.d(TAG, "add " + values.toString());
try{
// insert orThrow an exeption
db.insertOrThrow(TABLE_FBFriends, null, values);
//key/value -> keys = column names/ values = column values
}
catch (SQLException e) {
Log.d(TAG, e.toString());
return false;
}
}
db.close();
return true;
}
谢谢大家!
此致,
斯蒂恩
这是因为您还有旧的 table 而没有新的 table。首先要注意的是,创建一个数据库后,不要直接在 onCreate 数据库助手中更改名称 table。因为它只在第一次执行时创建 table。如果你想更改你的名字 table,只需创建一个函数来使用 alter table 查询并将旧名称 table 更改为新名称。
我正在开发一个 android 应用程序,但我遇到了无法解决的问题。我希望你们能帮助我。
我收到此错误:
android.database.sqlite.SQLiteException: table FBFriends has no column named id (code 1): , while compiling: INSERT INTO FBFriends(id,name) VALUES (?,?)
众所周知,错误是找不到 table。但是我做了table。
public DatabaseManager(Context context) {
//referentie naar cursus
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
//SQL for creating a new table
Log.d(TAG, "Tabel gemaakd");
String CREATE_DATABASE_TABLE ="CREATE TABLE Friends (id VARCHAR(255) PRIMARY KEY not null , name VARCHAR(255) )";
db.execSQL(CREATE_DATABASE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older database if existed
db.execSQL("DROP TABLE IF EXISTS Friends");
Log.d(TAG, "Tabel verwijdert");
// create new table
this.onCreate(db);
}
这是向数据库添加数据的函数。
private static final String TABLE_FBFriends = "Friends";
private static final String KEY_ID = "id";
private static final String KEY_Name = "name";
private static final String[] COLUMNS = {KEY_ID,KEY_Name};
public boolean addPersons(ArrayList<Person> listOfPersons)
{
Log.d(TAG, "add");
//get reference to writable DB
SQLiteDatabase db = this.getWritableDatabase();
Log.d(TAG, "toevoegen add");
//create ContentValues to add key "column"/value
for (Person p:listOfPersons) {
Log.d(TAG, "FOREACH");
ContentValues values = new ContentValues();
values.put(KEY_ID, p.getId());
Log.d(TAG, "first VALUE");
values.put(KEY_Name, p.getName()); // get title
Log.d(TAG, "second VALUE");
Log.d(TAG, "add " + values.toString());
try{
// insert orThrow an exeption
db.insertOrThrow(TABLE_FBFriends, null, values);
//key/value -> keys = column names/ values = column values
}
catch (SQLException e) {
Log.d(TAG, e.toString());
return false;
}
}
db.close();
return true;
}
谢谢大家!
此致, 斯蒂恩
这是因为您还有旧的 table 而没有新的 table。首先要注意的是,创建一个数据库后,不要直接在 onCreate 数据库助手中更改名称 table。因为它只在第一次执行时创建 table。如果你想更改你的名字 table,只需创建一个函数来使用 alter table 查询并将旧名称 table 更改为新名称。