赵雅智_sqlite修改表结构

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命令行输出:


赵雅智_sqlite修改表结构,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。