AndriodStudio新建数据库和表,以及基本操作

在新环境第一次新建数据库和表

这里我们以新建数据库存储用户名和密码为例。
数据库的类基于SQLiteOpenHelper。 设置数据库的名字(MyStocks.db)、表格的名字(user)、创建表格的语句为全局变量。在新建表格的语句中,可以看到格式为“Create tabel" + 表格名称+表头。其中表头的第一列最好为id,因为数据库会自动生成递增的id。之后则可以设置其他表头及其数据格式要求。这里我们设置了name(最长为20位的字符串。且用户名不得重复),email(最长为20位的字符串),password(最长为20位的字符串)这三个表头。在dbmanage的方法类中,设置1为数据库的初始版本号。我们将创建表格的方法写在onCreare方法中:db.execSQL(CREATE_TBL)。

public class dbmanage extends SQLiteOpenHelper {
   private static final String DB_NAME = "MyStocks.db";
    private static final String TBL_NAME = "user";
    private static final String CREATE_TBL = "create table user " +
            "(id integer primary key autoincrement,name varchar(20) unique,email varchar(20),password varchar(20))";
    private SQLiteDatabase db;
    public dbmanage(Context context) {
        super(context, DB_NAME, null, 1);
    }

    public dbmanage(Context context, String name, SQLiteDatabase.CursorFactory factory,
                    int version) {
        super(context, name, factory, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_TBL);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
	    if(oldVersion < newVersion){
	            .......
	        }
    }
    public void open() {
        db = getWritableDatabase();
    } 
    public void close(){
        if (db != null){
            db.close();
        }
    }

对数据库的基本操作

在数据中的基本操作包括:

//新建表格,CREATE_TBL为预先写好的完整语句
 db.execSQL(CREATE_TBL);
 //插入新数据
 db.execSQL("insert into user values(null,?,?,?)",new String []{user.getUserName(),user.getEmail(),user.getPassword()});
 //查询数据,查询name为指定值的数据
 Cursor c = db.rawQuery("select * from user where name='"+UserName+"'", null);
 String username,email,password;
while (c.moveToNext()) {
    String id = c.getString(0);
    username = c.getString(1);
    email= c.getString(2);
    password = c.getString(3);
}
//获取整个表的数据
Cursor c = db.query("user", new String[]{"id", "name","email","password"}, null, null, null, null, null);
//删除指定数据
int deleteCount = db.delete(TBL_NAME,  "name=?", new String[] { name + "" });

在已有的数据库中新建表

在onCreate方法中建表只有在新环境中第一次运行时才可以,后续再加表则不会运行。那么就需要在onUpgrade中进行更新。
我们定义新的建表语句建立collect的表格。同时需要将dbmanage方法类中的版本号加1变为2。此使数据库可以检测到数据库版本又改变,在onUpgrade方法中执行新建表的语句。

private static final String TBL_NAME_collect = "collect";
private static final String CREATE_TBL_collect = "create table collect (id integer primary key autoincrement,symbol varchar(20))";
public dbmanage(Context context) {

    super(context, DB_NAME, null, 2);
}

public dbmanage(Context context, String name, SQLiteDatabase.CursorFactory factory,
                int version) {
    super(context, name, factory, 2);

}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
     if(oldVersion < newVersion){
            db.execSQL(CREATE_TBL_collect);
        }
    }

你可能感兴趣的:(Android)