【发布时间】:2015-12-10 16:20:54
【问题描述】:
我可以用这种方式在我的数据库中添加另一个表吗?看看我的 onupgrade 我试过这种方式是否可能。一件事是每次我们添加或删除信息时都会升级数据库。??
public class DataBaseOperations extends SQLiteOpenHelper {
public static final int DATABASE_VERSION = 1;
private static final String SQL_CREATE_ENTRIES = "CREATE TABLE "+
mDatabase.Tableinfo.Table_Name +"("
+mDatabase.Tableinfo.Name+" TEXT,"
+mDatabase.Tableinfo.phone+" INTEGER,"
+mDatabase.Tableinfo.status+" TEXT,"
+mDatabase.Tableinfo.Pic+" BLOB"+")";
private static final String Contacts_Table = "CREATE TABLE "+
mDatabase.Tableinfo.contacts +"("
+mDatabase.Tableinfo.Contacts_id+" INTEGER PRIMARY KEY,"
+mDatabase.Tableinfo.Contacts_name+" TEXT,"
+mDatabase.Tableinfo.Contacts_phone+" INTEGER,"
+mDatabase.Tableinfo.status_contact+" TEXT,"
+mDatabase.Tableinfo.Contact_pic+" BLOB"+")";
public DataBaseOperations(Context context) {
super(context, mDatabase.Tableinfo.Database_Name, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(SQL_CREATE_ENTRIES);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if(newVersion==1){
db.execSQL(Contacts_Table);
onCreate(db);
}
}
这是我的那个合同课。
public class mDatabase {
public mDatabase(){
}
public static abstract class Tableinfo{
public static final String Name = "Name";
public static final String status = "status";
public static final String phone = "Phone";
public static final String Pic = "Pro_pic";
public static final String Database_Name = "User_info.db";
public static final String Table_Name = "User";
public static final String contacts = "Contacts";
public static final String Contacts_id= "Contact_id";
public static final String Contacts_name = "Contacts name";
public static final String Contacts_phone = "Contacts phone No";
public static final String status_contact = "Status";
public static final String Contact_pic = "pic";
}
}
【问题讨论】:
-
onUpgrade 在您升级数据库时被调用。最好将所有 create table 语句放在 onCreate 中,因为它在第一次创建数据库时调用,并且标题显示 mysql 将其更改为 sqlite
-
但它不会在 onCreate() 上创建第二个表; .它只创建第一个。
-
您没有创建第二个表的代码