SQLiteDatabase(数据库的增删改查)

来源:互联网 发布:业主名录采集软件 编辑:程序博客网 时间:2024/04/30 09:34
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 打开或者创建数据库
        SQLiteDatabase db = null;// 依赖于db执行数据库语法
        db = openOrCreateDatabase("tedu.db", MODE_PRIVATE, null);
        // 创建数据表
//         createTable(db);//创建时调用
        // 增加数据
//         insert(db);//增加时调用
//         newInsert(db);
        // 删除数据
//         delete(db);//删除时调用
//        newDelete(db);
        // 修改数据
        // update(db);//修改数据时调用
//        newUpdate(db);
        // 查询数据
        //newQuery(db);

    }
    
    public void newUpdate(SQLiteDatabase db){
        String table="person";
        ContentValues values=new ContentValues();
        values.put("name", "Jack");
        values.put("age", 18);
        String whereClause="id=?";//where子句,表示要操作的位置
        String[] whereArgs={3+""};//
        int affectedrows = db.update(table, values, whereClause, whereArgs);
        Log.i("info", "受影响行数:"+affectedrows);
        db.close();
    }
    
    public void newDelete(SQLiteDatabase db){
        
        String table="person";//数据表
        String whereClause="name=?";//where子句
        String name="JSON";
        String[] whereArgs={name};
        //返回受影响的行,为int类型
        int rows=db.delete(table, whereClause, whereArgs);
        Log.d("TGA", "rows = "+rows);
        db.close();
        
    }
    public void newInsert(SQLiteDatabase db) {
        String table = "person";
        String nullColumnHack = null;
        ContentValues values = new ContentValues();
        values.put("name", "KUK");// 增加数据,用key和value
        values.put("age", 26);// 增加数据,用key和value
        values.put("gender", 1);// 增加数据,用key和value
        long id = db.insert(table, nullColumnHack, values);
        Log.d("TAG", "ID = " + id);
        db.close();
    }

    // 平时推荐使用
    public void createTable(SQLiteDatabase db) {
        // 创建数据表
        String sql = "create table dtudents(name varchar(16) not null unique, age integer, gender integer, class integer);";
        // 同一张表中的id只会分配一次
        sql = "create table person(id integer primary key autoincrement, age integer, name varchar(16) not null unique, gender integer);";
        db.execSQL(sql);
//        db.close();//对数据进行操作的时候不能关闭数据表,不执行这段代码时,打开或者关闭不影响其他执行
    }

    // 插入数据或增加数据,一次只能增加一个数据
    public void insert(SQLiteDatabase db) {
        String sql = "";// 需要其语法对其引用和注入
        sql = "insert into person (name, gender, age) values ('Black', 1, 21)";
        db.execSQL(sql);

        sql = "insert into person (gender, name, age) values (1, 'JSON', 25)";
        db.execSQL(sql);

        sql = "insert into person (age, name) values (15, 'Billy')";
        db.execSQL(sql);
        sql = "insert into person (age, name, gender) values (18, 'jeo', 0)";
        db.execSQL(sql);
        db.close();
    }

    public void delete(SQLiteDatabase db) {
        String sql = "delete from students where name = 'KUK'";

        // 同一个字符串被重新赋值,执行下面的语句
        sql = "delete from person where id=4";
        db.execSQL(sql);
        db.close();
    }

    public void update(SQLiteDatabase db) {
        String sql = "update person set age=15 where id=1 or id=3";
        db.execSQL(sql);
        db.close();
    }

    public void newQuery(SQLiteDatabase db) {
        // The table name to compile the query against.针对数据表进行编译
        String table="person";
        /*
         * A list of which columns to return. Passing null will return all
         * columns, 返回行数(要查询的字段列表),如果是null值,返回所有行数(表示查询所有字段)如,String[]
         * columns=null; which is discouraged to prevent reading data from
         * storage that isn't going to be used
         */
        String[] columns = {"name", "age", "gender", "id"};
        String selection = "name=?";// where子句,参考delete()方法的参数whereClause
        String jack = "jack";;
        String[] selectionArgs = {jack};// 参考delete()方法的参数whereArgs
        String groupBy = null;// 无视
        String having = null;// 无视
        String orderBy = null;// (order by子句,不需要填写“order by”关键字)
        Cursor cursor = db.query(table, columns, selection, selectionArgs,
                groupBy, having, orderBy);
        // --- 遍历方式1 ---
        /**
         *Move the cursor to the first row.移动光标到第一行
         *This method will return false if the cursor is empty.如果光标为空,返回false
         *@reture  返回值为是否移动成功
         */
        // while(c.moveToNext()) {
        //
        // }
        // --- 遍历方式2 ---
        // if(c.moveToFirst()) {
        // do {
        //
        // } while(c.moveToNext());
        // }
        // --- 遍历方式3 ---
        //for(初始条件;终止条件;每次变动的条件){}
        for (cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToNext()) {
            Log.i("tag", "------------------------------------------");
            Log.i("tag", "name = "+cursor.getString(cursor.getColumnIndex("name")));
            Log.i("tag", "id = "+cursor.getInt(cursor.getColumnIndex("id")));
            Log.i("tag", "gender = "+cursor.getInt(cursor.getColumnIndex("gender")));
            Log.i("tag", "age"+cursor.getInt(cursor.getColumnIndex("age")));
            
        }
        if (!cursor.isClosed()) {
            cursor.close();
        }
    }

}


0 0
原创粉丝点击