Sqlite的操作示例代码

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

/**
 * 黑名单数据库
 */
public class BlackNumberOpenHelper extends SQLiteOpenHelper {


    public BlackNumberOpenHelper(Context context) {
        super(context, "blacknumber.db", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        //创建表 number: 电话号码; mode: 拦截模式,0(拦截电话),1(拦截短信),2(拦截全部)
        String sql = "create table blacknumber(_id integer primary key autoincrement, number " +
                "varchar(30), mode integer)";
        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import java.util.ArrayList;
import cn.itcast.mobilesafe11.db.BlackNumberOpenHelper;
import cn.itcast.mobilesafe11.domain.BlackNumberInfo;

/**
 * Created by Administrator on 2016/11/24 0024.
 * <p/>
 * 黑名单增删改查操作: crud
 * <p/>
 * 单例设计模式
 */
public class BlackNumberDao {

    private final BlackNumberOpenHelper mHelper;

    //3. 声明一个静态对象: 两种方式初始化: 1. 饿汉模式
    // private static BlackNumberDao mInstance = new BlackNumberDao();
    //2. 懒汉模式
    private static BlackNumberDao mInstance;

    //1. 私有构造方法
    private BlackNumberDao(Context ctx) {
        mHelper = new BlackNumberOpenHelper(ctx);
    }

    //2.公开方法,返回单例对象
    public static BlackNumberDao getInstance(Context ctx) {
        //懒汉: 考虑线程安全问题, 两种方式: 1. 给方法加同步锁 synchronized, 效率低; 2. 给创建对象的代码块加同步锁
        //读数据不会出现线程安全问题, 写数据会出现线程安全问题
        //A, B, C
        if (mInstance == null) {
            //B, C
            synchronized (BlackNumberDao.class) {
                //A
                if (mInstance == null) {
                    mInstance = new BlackNumberDao(ctx);
                }
            }
        }

        return mInstance;
    }

    public boolean add(String number, int mode) {
        SQLiteDatabase database = mHelper.getWritableDatabase();

        ContentValues values = new ContentValues();
        values.put("number", number);
        values.put("mode", mode);
        //返回的是插入记录的id, -1表示失败
        long insert = database.insert("blacknumber", null, values);
        database.close();
        return insert != -1;
    }

    public boolean delete(String number) {
        SQLiteDatabase database = mHelper.getWritableDatabase();
        //返回删除的行数
        int delete = database.delete("blacknumber", "number=?", new String[]{number});
        database.close();
        return delete > 0;
    }

    public boolean update(String number, int mode) {
        SQLiteDatabase database = mHelper.getWritableDatabase();
        ContentValues values = new ContentValues();
        //values.put("number", number);
        values.put("mode", mode);
        //返回更新的行数
        int update = database.update("blacknumber", values, "number=?", new String[]{number});
        database.close();
        return update > 0;
    }

    //查询某号码是否在黑名单数据库中
    public boolean find(String number) {
        SQLiteDatabase database = mHelper.getReadableDatabase();

        Cursor cursor = database.query("blacknumber", null,
                "number=?", new
                        String[]{number}, null, null, null);
        boolean exist = false;
        if (cursor != null) {
            if (cursor.moveToNext()) {
                //查询到了结果
                //return true;
                exist = true;
            }
            cursor.close();
        }
        database.close();
return exist; } //查询某个号码的拦截模式 //返回-1表示没有查到结果 public int findMode(String number) { SQLiteDatabase database = mHelper.getReadableDatabase(); Cursor cursor = database.query("blacknumber", new String[]{"mode"}, "number=?", new String[]{number}, null, null, null); int mode = -1; if (cursor != null) { if (cursor.moveToNext()) { //查询到了结果 mode = cursor.getInt(0); } cursor.close(); } database.close(); return mode; } //查询所有黑名单集合 public ArrayList<BlackNumberInfo> findAll() { SQLiteDatabase database = mHelper.getReadableDatabase(); Cursor cursor = database.query("blacknumber", new String[]{"number", "mode"}, null, null, null, null, null); ArrayList<BlackNumberInfo> list = new ArrayList<>(); if (cursor != null) { while (cursor.moveToNext()) { BlackNumberInfo info = new BlackNumberInfo(); String number = cursor.getString(0); int mode = cursor.getInt(1); info.number = number; info.mode = mode; list.add(info); } cursor.close(); } database.close(); return list; } //分页查询黑名单集合 //index:查询的起始位置 public ArrayList<BlackNumberInfo> findPart(int index) { SQLiteDatabase database = mHelper.getReadableDatabase(); //select * from blacknumber limit 0,20 //limit x,y : x代表起始数据位置; y代表查询多少条记录 //根据id逆序排列 Cursor cursor = database.rawQuery("select number,mode from blacknumber order by _id desc " +"limit ?,20", new String[]{index + ""}); ArrayList<BlackNumberInfo> list = new ArrayList<>(); if (cursor != null) { while (cursor.moveToNext()) { BlackNumberInfo info = new BlackNumberInfo(); String number = cursor.getString(0); int mode = cursor.getInt(1); info.number = number; info.mode = mode; list.add(info); } cursor.close(); } database.close(); return list; } //返回条目总个数 public int getTotalCount() { //select count(*) from blacknumber SQLiteDatabase database = mHelper.getReadableDatabase(); Cursor cursor = database.rawQuery("select count(*) from blacknumber", null); int count = 0; if (cursor != null) { if (cursor.moveToNext()) { count = cursor.getInt(0); } cursor.close(); } database.close(); return count; } }

 

转载于:https://www.cnblogs.com/loaderman/p/6431941.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一些使用sqlite3的简单代码示例: 连接到数据库并创建一个表: ```python import sqlite3 # 连接到数据库 conn = sqlite3.connect('test.db') # 创建一个游标 cursor = conn.cursor() # 在表中创建一个名为users的表 cursor.execute('''CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)''') # 提交事务 conn.commit() # 关闭连接 conn.close() ``` 向表中插入数据: ```python import sqlite3 # 连接到数据库 conn = sqlite3.connect('test.db') # 创建一个游标 cursor = conn.cursor() # 向表中插入一条数据 cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Tom", 20)) # 提交事务 conn.commit() # 关闭连接 conn.close() ``` 从表中查询数据: ```python import sqlite3 # 连接到数据库 conn = sqlite3.connect('test.db') # 创建一个游标 cursor = conn.cursor() # 查询表中的所有数据 cursor.execute("SELECT * FROM users") # 获取查询结果 rows = cursor.fetchall() # 遍历结果并打印 for row in rows: print(row) # 关闭连接 conn.close() ``` 这是一些使用sqlite3的基本操作示例,您可以根据需要进行参考和使用。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [Python对sqlite3操作代码示例](https://blog.csdn.net/weixin_39966053/article/details/112049328)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [sqlite3 代码示例](https://blog.csdn.net/weixin_35756130/article/details/129083220)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值