|
1.更改数据库版本号(每次更新都一定要进行版本的升级)
2.更新语句一条一条写,不能并列写
例如:
public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
db.execSQL("alter table users add userage integer;<span style="font-family: Arial, Helvetica, sans-serif;">alter table users add usersalary doouble</span>");
}上面语句只能执行“;”前的语句,后面的无法插入。 所以要将代码改为下式代码,才能两条语句都执行。
public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
db.execSQL("alter table users add userage integer");
db.execSQL("alter table users add usersalary doouble");
}
具体代码:
创建数据库代码:DatabaseHelper
package com.example.android_sqlite.database;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper extends SQLiteOpenHelper {
// 数据库名称
private static final String DATABASENAME = "csdn.db";
// 数据库更新版本号
private static int databaseBersion = 2;
/**
*
* @param context
* :上下文对象
* @param name
* :数据库名称
* @param factory
* :cursor工厂对象,可以设置null.采用默认的CursorFactory对象
* @param version
* :数据库版本号
*/
public DatabaseHelper(Context context) {
super(context, DATABASENAME, null, databaseBersion);
}
/**
* 当数据库第一次创建的时候会调用这个方法
*/
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table users(userid integer primary key autoincrement,username varchar(20))");
}
/**
* 当数据库的版本升级的时候,自动调用这个方法(根据数据库的版本号)
*/
@Override
public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
db.execSQL("alter table users add userage integer");
db.execSQL("alter table users add usersalary doouble");
System.out.println("-----------------升级了-----------------");
}
}
测试类:DatabaseTese.java
package com.example.android_sqlite.test;
import com.example.android_sqlite.database.DatabaseHelper;
import android.test.AndroidTestCase;
public class DatabaseTese extends AndroidTestCase {
public void createDatabase() {
DatabaseHelper dh = new DatabaseHelper(getContext());
dh.getWritableDatabase();
}
}
运行结果如下: 控制台输出:
cmd命令行输出:
|
|
|