ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Android的Sqlite数据库使用

2022-08-10 18:31:45  阅读:338  来源: 互联网

标签:Sqlite NAME COLUMN 数据库 MyDBEntry int Android public String


使用数据库无非增删改查

1.定义表和字段

/**
 * 用来定义表名,表中数据字段
 */
public final class MyDBEntry implements BaseColumns {
    public static final String TABLE_NAME = "tb_name";
    public static final String COLUMN_NAME_NAME = "name";
    public static final String COLUMN_NAME_AGE = "age";
    public static final String COLUMN_NAME_MONEY = "money";

}

2.数据库创建以及使用

public class MyDBOpenHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "db_name.db";//数据库名字
    private static final int DATABASE_VERSION = 1;//版本号

    //新建表的语句
    private static final String SQL_CREATE_ENTRIES =
            "CREATE TABLE " + MyDBEntry.TABLE_NAME + " (" +
                    MyDBEntry._ID +" INTEGER PRIMARY KEY," +
                    MyDBEntry.COLUMN_NAME_NAME+" TEXT," +
                    MyDBEntry.COLUMN_NAME_AGE+" integer,"+
                    MyDBEntry.COLUMN_NAME_MONEY + " double)";

    //删除表的语句
    private static final String SQL_DELETE_ENTRIES =
            "DROP TABLE IF EXISTS " + MyDBEntry.TABLE_NAME;

    public MyDBOpenHelper(Context context){
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

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

    /**
     * 数据库表升级,一般删掉旧的,再创建新的
     * @param db
     * @param oldVersion
     * @param newVersion
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL(SQL_DELETE_ENTRIES);
        onCreate(db);
    }

    /**
     * 增加数据
     */
    public static long insertData(Context context,String name,int age,double money){
        MyDBOpenHelper dbOpenHelper = new MyDBOpenHelper(context);
        SQLiteDatabase database = dbOpenHelper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(MyDBEntry.COLUMN_NAME_NAME, name);
        values.put(MyDBEntry.COLUMN_NAME_AGE, age);
        values.put(MyDBEntry.COLUMN_NAME_MONEY, money);
        long newRowId = database.insert(MyDBEntry.TABLE_NAME, null, values);//返回插入的行数,如果在插入数据时出错,会返回 -1
        dbOpenHelper.close();//关闭数据库
        return newRowId;
    }

    /**
     * 删除数据
     */
    public static int deleteData(Context context,String name){
        MyDBOpenHelper dbOpenHelper = new MyDBOpenHelper(context);
        SQLiteDatabase database = dbOpenHelper.getWritableDatabase();
        String selection = MyDBEntry.COLUMN_NAME_NAME + " LIKE ?";
        String[] selectionArgs = { "diu" };
        int deletedRows = database.delete(MyDBEntry.TABLE_NAME, selection, selectionArgs);//返回值表示从数据库中删除的行数
        dbOpenHelper.close();//关闭数据库
        return deletedRows;
    }

    /**
     * 修改数据
     */
    public static int updateData(Context context,String oldName,String newName,int newAge,double newMoney){
        MyDBOpenHelper dbOpenHelper = new MyDBOpenHelper(context);
        SQLiteDatabase database = dbOpenHelper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(MyDBEntry.COLUMN_NAME_NAME, newName);
        values.put(MyDBEntry.COLUMN_NAME_AGE, newAge);
        values.put(MyDBEntry.COLUMN_NAME_MONEY, newMoney);
        String selection = MyDBEntry.COLUMN_NAME_NAME + " LIKE ?";
        String[] selectionArgs = { oldName };
        int count = database.update(
                MyDBEntry.TABLE_NAME,
                values,
                selection,
                selectionArgs);//返回值是数据库中受影响的行数
        dbOpenHelper.close();//关闭数据库
        return count;
    }
    /**
     * 查询数据
     */
    public static void queryData(Context context,String name){
        MyDBOpenHelper dbOpenHelper = new MyDBOpenHelper(context);
        SQLiteDatabase database = dbOpenHelper.getWritableDatabase();
        //定义你要查询的表的行中哪些列的数据
        String[] projection = {
                BaseColumns._ID,
                MyDBEntry.COLUMN_NAME_NAME,
                MyDBEntry.COLUMN_NAME_AGE,
                MyDBEntry.COLUMN_NAME_MONEY
        };

        //定义要查询谁的数据
        String selection = MyDBEntry.COLUMN_NAME_NAME + " LIKE ?";
        String[] selectionArgs = { name };

        //定义排序
        String sortOrder = MyDBEntry.COLUMN_NAME_AGE + " DESC";

        Cursor cursor = database.query(
                MyDBEntry.TABLE_NAME,
                projection,//传入null 代表所有
                selection,//传入null 代表所有
                selectionArgs,//传入null 代表所有
                null,
                null,
                sortOrder
        );
        while(cursor.moveToNext()) {
            //得到某列数据所在的位置
            int idPosition = cursor.getColumnIndexOrThrow(MyDBEntry._ID);
            //获取某列的数据
            long itemId = cursor.getLong(idPosition);

            //得到某列数据所在的位置
            int namePosition = cursor.getColumnIndexOrThrow(MyDBEntry.COLUMN_NAME_NAME);
            //获取某列的数据
            cursor.getString(namePosition);

            //得到某列数据所在的位置
            int agePosition = cursor.getColumnIndexOrThrow(MyDBEntry.COLUMN_NAME_AGE);
            //获取某列的数据
            int age = cursor.getInt(agePosition);

            //得到某列数据所在的位置
            int moneyPosition = cursor.getColumnIndexOrThrow(MyDBEntry.COLUMN_NAME_MONEY);
            //获取某列的数据
            double money = cursor.getDouble(moneyPosition);

        }
        cursor.close();//关闭游标
        dbOpenHelper.close();//关闭数据库
    }

}

标签:Sqlite,NAME,COLUMN,数据库,MyDBEntry,int,Android,public,String
来源: https://www.cnblogs.com/maowuge/p/16573512.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有