安卓SQLite数据库编程

SQLite数据库编程
(1)在MainActivity所在的包里,新建名为DbHelper的SQLite数据库打开助手类

public class DbHelper extends SQLiteOpenHelper {
    public static final String TB_NAME = "friends";  //表名

    //构造方法:第1参数为上下文,第2参数库库名,第3参数为游标工厂,第4参数为版本
    public DbHelper(Context context, String dbname, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, dbname, factory, version);  //创建或打开数据库
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        //当表不存在时,创建表;第一字段为自增长类型
        db.execSQL("CREATE TABLE IF NOT EXISTS " +
                TB_NAME + "( _id integer primary key autoincrement," +
                "name varchar," + "age integer"+ ")");
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // 执行SQL命令
        db.execSQL("DROP TABLE IF EXISTS " + TB_NAME);
        onCreate(db);
    }
}

(2)在MainActivity所在的包里,新建名为MyDAO的数据库访问类

public class MyDao {
    private SQLiteDatabase myDb;  //类的成员
    private DbHelper dbHelper;  //类的成员

    public MyDao(Context context) {  //构造方法,参数为上下文对象
        //第1参数为上下文,第2参数为数据库名
        dbHelper = new DbHelper(context,"test.db",null,1);
    }

    public Cursor allQuery(){    //查询所有记录
        myDb = dbHelper.getReadableDatabase();
        return myDb.rawQuery("select * from friends",null);
    }
    public  int getRecordsNumber(){  //返回数据表记录数
        myDb = dbHelper.getReadableDatabase();
        Cursor cursor= myDb.rawQuery("select * from friends",null);
        return cursor.getCount();
    }

    public void insertInfo(String name,int age){  //插入记录
        myDb = dbHelper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put("name", name);
        values.put("age", age);
        long rowid=myDb.insert(DbHelper.TB_NAME, null, values);
        if(rowid==-1)
            Log.i("myDbDemo", "数据插入失败!");
        else
            Log.i("myDbDemo", "数据插入成功!"+rowid);
    }
    public void deleteInfo(String selId){  //删除记录
        String where = "_id=" + selId;
        int i = myDb.delete(DbHelper.TB_NAME, where, null);
        if (i > 0)
            Log.i("myDbDemo", "数据删除成功!");
        else
            Log.i("myDbDemo", "数据未删除!");
    }
    public void updateInfo(String name,int age,String selId){  //修改记录
        //方法中的第三参数用于修改选定的记录
        ContentValues values = new ContentValues();
        values.put("name", name);
        values.put("age", age);
        String where="_id="+selId;
        int i=myDb.update(DbHelper.TB_NAME, values, where, null);

        //上面几行代码的功能可以用下面的一行代码实现
        //myDb.execSQL("update friends set name = ? ,age = ? where _id = ?",new Object[]{name,age,selId});

        if(i>0)
            Log.i("myDbDemo","数据更新成功!");
        else
            Log.i("myDbDemo","数据未更新!");
    }
}

MainActivity程序中对数据库的插入操作和查询,使用了MyDAO类的相关方法
首次运行时,增加2条记录并使用ListView控件显示出来
详细代码见链接
https://github.com/summer367/SQLite.git
截图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值