我想在android中有两个表,但我看到一个错误,就像找不到第二个表。我怎么修好? 有关数据库版本或onCreate方法的问题,我猜?
public class dbHelper extends SQLiteOpenHelper{
private static final String DATABASE_NAME = "DBO_Finish";
private static final String TABLE_USERS = "users";
private static final String TABLE_OLCUM = "olcum";
private static final String TABLE_BILGI="asd";
public dbHelper(Context context,Activity act) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "CREATE TABLE IF NOT EXISTS " + TABLE_USERS +
"(id INTEGER PRIMARY KEY,user_name TEXT,user_password TEXT,olcum_id INTEGER" + ")";
db.execSQL(sql);
String sql2 = "CREATE TABLE IF NOT EXISTS " + TABLE_BILGI +
"(id INTEGER PRIMARY KEY,shortName TEXT,longName TEXT" + ")";
db.execSQL(sql2);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_USERS);
db.execSQL("DROP TABLE IF EXISTS " + TABLE_BILGI);
onCreate(db);
}
}
答案 0 :(得分:0)
我使用下面的方法来创建我的表。如果你想像添加字段一样修改表结构,那么首先更改你的类,然后将DatabaseHelper中的dbVersion数增加一。 并将创建新表。
每个具有指定类的表如下:
Tbltest的TblTest.java类:
公共类TblTest {
public static final String TABLE = "Test";
public static final String COLUMN_ID = "id";
public int id;
public static final String CREATE_TABLE = "create table "
+ TABLE + "("
+ COLUMN_ID + " integer primary key"
+ ");";
}
和" DatabaseHelper.java"数据库助手的类(创建表):
public class DatabaseHelper extends SQLiteOpenHelper{
private static final String DBNAME = "mytestdb";
public SQLiteDatabase db;
private final static int dbVersion = 1;
public DatabaseHelper() {
super(AppContext.getAppContext(), DBNAME, null, dbVersion);
open();
}
@Override
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(TblTest.CREATE_TABLE);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(DatabaseHelper.class.getName(),
"Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS " + TblTest.TABLE);
onCreate(db);
}
public void open() throws SQLException {
db = getWritableDatabase();
}
public void close() {
db.close();
}
}
答案 1 :(得分:0)
构造函数的第三个参数是一个数字,表示您在哪个版本的数据库中。基本上每次使用该编号调用构造函数时,Android操作系统都会检查是否已存在具有该版本的数据库,如果是这种情况则不会发生任何其他情况,但如果数据库不存在或版本注册到它的位置较低,然后将调用onUpgrade
方法。
因此,如果您想添加新表格,只需在这种情况下将该数字更改为' 2' ,并在每次要创建新表格时将其递增。
希望有所帮助,问候!