/** * * @ context 上下文 * @ name 数据库名称 * @ factory 游标工厂 * @ version 版本号 */ public DataBaseHelper( Context context) { super(context, Constants.DATABASE_name, null, Constants.DATABASE_VERSION); }其中有两个成员方法,onCreate方法会在数据库刚刚被创建的时候调用,onUpGrade方法会在数据库更新的时候被调用(newVersion>oldVersion)
@OverrIDe public voID onCreate(sqliteDatabase db) { //创建数据库,第一次创建时才会调用 //创建字段 //Log.d(TAG,"创建数据库...."); //sql: create table table_name(ID integer,name varchar,age integer,salary integer); String sql="create table "+Constants.table_name+"(ID integer,name varchar,age integer,salary integer)"; db.execsql(sql); } @OverrIDe public voID onUpgrade(sqliteDatabase db, int oldVersion, int newVersion) { //更新数据库 只有newVersion高于oldVersion时才会调用 //newVersion=oldVersion时不会调用 //newVersion<oldVersion时会报错 // Log.d(TAG,"升级数据库...."); // String sql; switch (oldVersion){ case 1: sql ="alter table "+Constants.table_name+" add phone integer"; db.execsql(sql); break; case 2: break; } }第二步:主函数中实例sqliteOpenHelper类,并且调用getWriteDataBase()方法,数据库就可以创建了
DataBaseHelper helper = new DataBaseHelper(this); helper.getWritableDatabase();
创建成功的表结构:(与onCreative里面的表结构一样)
创建成功的文件结构:
(2)数据库升级 数据库升级需要调用onUpGrade方法,用newVersion和oldVersion来比较判断需要添加那些内容或者进行那些 *** 作,newVersion需要在Constants类里面更改DATABASE_VERSION才可以
@OverrIDe public voID onUpgrade(sqliteDatabase db, int oldVersion, int newVersion) { //更新数据库 只有newVersion高于oldVersion时才会调用 //newVersion=oldVersion时不会调用 //newVersion<oldVersion时会报错 // Log.d(TAG,"升级数据库...."); // String sql; switch (oldVersion){ case 1: sql ="alter table "+Constants.table_name+" add phone integer"; db.execsql(sql); break; case 2: break; } }DATABASE_VERSION升级到2之后
(3)Dao层 *** 作(SQL语句 *** 作)
package com.example.databasedemo;import androIDx.appcompat.app.AppCompatActivity;import androID.os.Bundle;public class MainActivity extends AppCompatActivity { @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); //创建数据库 DatabaseHelper helper =new DatabaseHelper(this); helper.getWritableDatabase(); Dao dao =new Dao(getApplicationContext());// dao.insert();// dao.update();// dao.query(); dao.delete(); }}MainActivity
package com.example.databasedemo;import androID.content.Context;import androID.database.Cursor;import androID.database.sqlite.sqliteDatabase;import androID.util.Log;/** * 这个类用于对数据库的增删改查 */public class Dao { private final DatabaseHelper mHelper; private static final String TAG="Dao"; public Dao(Context context){ //创建数据库 //Ctrl+Alt+F,之后加回车,创建成员变量 mHelper = new DatabaseHelper(context); } public voID insert(){ sqliteDatabase db = mHelper.getWritableDatabase(); String sql="insert into "+Constants.table_name+"(_ID,name,age,salary,phone) values(?,?,?,?,?)"; Object []obj={1,"haohao",20,10000,1234567890}; db.execsql(sql,obj); db.close(); } public voID delete(){ sqliteDatabase db = mHelper.getWritableDatabase(); String sql="delete from "+Constants.table_name+" where name = ?"; Object []obj={"haohao"}; db.execsql(sql,obj); db.close(); } public voID update(){ sqliteDatabase db = mHelper.getWritableDatabase(); String sql="update "+Constants.table_name+" set salary= ? where name = ?"; Object []obj={20000,"haohao"}; db.execsql(sql,obj); db.close(); } public voID query(){ sqliteDatabase db = mHelper.getWritableDatabase(); String sql="select * from "+Constants.table_name+" where name = ?"; String []obj={"haohao"}; Cursor cursor = db.rawquery(sql, obj); while (cursor.movetoNext()){ String name = cursor.getString(cursor.getColumnIndex("name")); String age = cursor.getString(cursor.getColumnIndex("age")); Log.d(TAG,"名字:"+name+"年龄:"+age); } cursor.close(); db.close(); }}Dao三、心得体会总的来说今天的收获还是不小的,sqlite的 *** 作语句和MysqL的类似所以不难理解,但是创建数据库确实方便很多,有已经封装好的类可以直接调用创建,非常方便。另外今天我学到的最有用的东西我认为是常量类的创建,把常量全部放到一个类里面,既方便了之后的迭代,又方便了统一的调用更改。
总结
以上是内存溢出为你收集整理的Android开发之sqlite数据库的练习全部内容,希望文章能够帮你解决Android开发之sqlite数据库的练习所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)