数据库增删改查的两种方式

本文介绍了数据库增删改查的两种方式:一是通过SQL语句实现,包括添加、删除、修改和查询;二是利用Android封装好的方法,同样涵盖四个基本操作,并详细展示了具体代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据库增删改查的两种方式:
第一种:通过SQL语句实现
/**
 * 联系人数据库表的访问类
 */
public class ContactInfoDao {
    /**
     * 数据库打开的帮助类
     */
    private MyDBOpenHelper helper;
    
    /**
     * 在构造方法里面完成 必须要用的类的初始化
     * @param context
     */
    public ContactInfoDao(Context context) {
        helper = new MyDBOpenHelper(context);
    }

    /**
     * 添加一条记录
     * @param name 联系人姓名
     * @param phone 联系人电话
     */
    public void add(String name, String phone){
        SQLiteDatabase db = helper.getWritableDatabase();
        db.execSQL("insert into contactinfo (name,phone) values (?,?)", new Object[]{name,phone});
        //记得释放数据库资源
        db.close();
    }
    /**
     * 根据姓名删除一条记录
     * @param name 要删除的联系人的姓名
     */
    public void delete(String name){
        //判断这个数据是否存在.
        SQLiteDatabase db = helper.getWritableDatabase();
        db.execSQL("delete from contactinfo where name=?", new Object[]{name});
        db.close();
        //再从数据库里面查询一遍,看name是否还在
    }
    /**
     * 修改联系人电话号码
     * @param newphone 新的电话号码
     * @param name 要修改的联系人姓名
     */
    public void update(String newphone , String name){
        SQLiteDatabase db = helper.getWritableDatabase();
        db.execSQL("update contactinfo set phone =? where name=?", new Object[]{newphone,name});
        db.close();
    }
    /**
     * 查询联系人的电话号码
     * @param name 要查询的联系人
     * @return 电话号码
     */
    public String getPhoneNumber(String name){
        String phone = null;
        SQLiteDatabase db = helper.getReadableDatabase();
        Cursor  cursor = db.rawQuery("select phone from contactinfo where name=?", new String[]{name});
        if(cursor.moveToNext()){//如果光标可以移动到下一位,代表就是查询到了数据
            phone = cursor.getString(0);
        }
        cursor.close();//关闭掉游标,释放资源
        db.close();//关闭数据库,释放资源
        return phone;
    }
}

第二种:
通过安卓中封装好的方法
ublic class ContactInfoDao {
    //将打开数据库的帮助类声明成一个全局变量,因为在本来中用的比较频繁
private MyDBOpenHelper helper;
 //在构造方法中对要用的对象进行实例化,避免重复使用时多次创建的麻烦
public ContactInfoDao(Context context){
    //对必须要用的类进行初始化
      helper = new MyDBOpenHelper(context);
      
 }
/**
 * 在数据库中添加一条记录,该方法是安卓中封装好的
 * @param name 联系人的名字
 * @param phone  联系人的联系方式
 * @return 返回的是添加后在数据库的行号  -1代表添加失败
 */
//通过在xml布局文件中直接指定点击事件的方法名的方式完成添加的点击事件
public long add(String name,String phone ){
    //通过帮助类拿到数据库
    SQLiteDatabase db = helper.getWritableDatabase();
    //创建一个使用默认初始大小的值空set集合
    ContentValues values = new ContentValues();
    //将名字和联系人联系方式存入set集合内
    values.put("name", name);
    values.put("phone", phone);
    //内部是组拼SQL语句实现的,将联系人姓名和联系方式添加到数据库表中,通过源码查看,S是用StringBuilder来进行拼接
    long rowid = db.insert("contactinfo", null, values);
    db.close();//关闭数据库
    return rowid;
}
/**
 * 根据姓名删除一条记录
 * @param name 要删除的联系人的姓名
 * @return 返回0代表的是没有删除任何的记录 返回整数int值代表删除了几条数据
 */
public int delete(String name){
    SQLiteDatabase db = helper.getWritableDatabase();
    int rowconut = db.delete("contactinfo", "name=?", new String[]{name});
    db.close();
    return rowconut;
    
}
/**
 * 修改联系人电话号码
 * @param newphone 新的电话号码
 * @param name 要修改的联系人姓名
 * @return 0代表一行也没有更新成功, >0 整数代表的是更新了多少行记录
 */
public int update(String newphone,String name){
    SQLiteDatabase db = helper.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put("newphone", newphone);
    int rowcount = db.update("contactinfo", values, "name=?", new String[]{name});
    db.close();
    return rowcount;
    
}
/**
 * 查询联系人的电话号码
 * @param name 要查询的联系人
 * @return 电话号码
 */
public String getPhoneNumber(String name){
    String phone=null;
    SQLiteDatabase db = helper.getReadableDatabase();
    //Cursor底层是一个set集合,set集合的特性是无序不重复
    Cursor cursor = db.query("contactinfo", new String[]{"phone"}, "name=?", new String[]{name}, null, null, null);
    if(cursor.moveToNext()){//如果光标可以移动到下一位,就代表查询到类数据
        phone=cursor.getString(0);//光标拿到的脚标为0的字符串就为电话号码,因为这个集合中只存入了一个电话号码
    }
    cursor.close();//关闭游标,释放资源,相当于java中的流的flush()方法
    db.close();
    return phone;
    
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值