您的位置:首页 > 移动开发 > Android开发

Android 中的SQLite

2016-02-20 14:31 435 查看
//cursor.move(offset) 将记录的指针向上或者向下移动指定的行数,offset是正数代表向下,如果是负数代表向上

//cursor.moveToFirst() 移动到第一条数据,并且判断第一条数据是否存在

//cursor.moveToLast() 移动到最后一条数据,并且判断最后一条数据是否存在

//cursor.moveToNext() 移动到下一条数据,并且判断下一条数据是否存在

//cursor.moveToPrevious() 移动到上一条数据,并且判断上一条数据是否存在

//cursor.moveToPosition(position) 移动到某一条数据上,并且判断当前数据是否存在

MainActivity.java

[code]package com.example.zjday14_sqlite;

import com.example.zjday14_sqlite.service.DbService;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {
    private Button creatBtn,updateBtn,addBtn,deleteBtn,gaiBtn,queryBtn;
    private DbService dbService;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();

        dbService =new DbService(getApplicationContext());
        MyListener myListener =new MyListener();
        creatBtn.setOnClickListener(myListener);
        updateBtn.setOnClickListener(myListener);
        addBtn.setOnClickListener(myListener);
        deleteBtn.setOnClickListener(myListener);
        gaiBtn.setOnClickListener(myListener);
        queryBtn.setOnClickListener(myListener);
    }

    private void initView() {
        creatBtn=(Button) findViewById(R.id.creat_btn_id);
        updateBtn=(Button) findViewById(R.id.update_btn_id);
        addBtn=(Button) findViewById(R.id.add_btn_id);
        deleteBtn=(Button) findViewById(R.id.delete_btn_id);
        gaiBtn=(Button) findViewById(R.id.gai_btn_id);
        queryBtn=(Button) findViewById(R.id.query_btn_id);
    }
    public class MyListener implements OnClickListener{

        @Override
        public void onClick(View v) {
            switch (v.getId()) {
            //创建数据库
            case R.id.creat_btn_id:
                dbService.creatDB();

                break;
            case R.id.update_btn_id:

                break;
                //增加数据
            case R.id.add_btn_id:
                dbService.insertData();
                break;
                //删除数据
            case R.id.delete_btn_id:
                dbService.deleteData();
                break;
                //修改数据
            case R.id.gai_btn_id:
                dbService.updateData();
                break;
            //查询数据
            case R.id.query_btn_id:
                dbService.queryData();
                break;

            default:
                break;
            }
            Toast.makeText(getApplicationContext(), "执行成功", Toast.LENGTH_SHORT).show(); 
        }   
    }
}


DbOpenHelper.java

[code]package com.example.zjday14_sqlite.db;

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

public class DbOpenHelper extends SQLiteOpenHelper{

    /**
     * 构造方法
     *Context context,
     *String name   数据库名称
     * CursorFactory factory    游标工厂
     * int version  数据库版本号
     */
    public DbOpenHelper(Context context, String name, CursorFactory factory,
            int version) {
        super(context, name, factory, version);
    }

    public DbOpenHelper(Context context) {
        super(context, "xx", null, 1);
    }

    /**
     * 创建数据库
     * 
     * 第一次执行时调用此方法(只调用一次)
     * 
     * SQLiteDatabase db 操作数据库的类
     */
    @Override
    public void onCreate(SQLiteDatabase db) {

        //创建表
        db.execSQL("create table user(_id integer primary key autoincrement,name varchar(50),age integer)");
    }
    /**
     * 更新数据库
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }

}


DbService.java

[code]package com.example.zjday14_sqlite.service;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

import com.example.zjday14_sqlite.db.DbOpenHelper;

public class DbService {
    private Context context;
    private DbOpenHelper dbOpenHelper;

    public DbService(Context context) {
        super();
        this.context = context;
        dbOpenHelper =new DbOpenHelper(context);
    }

    //创建数据库
    public void creatDB(){
//      dbOpenHelper =new DbOpenHelper(context);
        //只有调用此方法后数据才能创建,在openhelper中已经创建了表

        dbOpenHelper.getWritableDatabase();
    }
    // 插入数据
    public void insertData(){
        //第一种方式:直接执行SQL语句
    /*  
        //SQLiteDatabase   管理和操作数据库
        SQLiteDatabase db =dbOpenHelper.getWritableDatabase();
        //执行插入语句
        db.execSQL("insert into user(name,age) values('张三',18)");
        db.execSQL("insert into user(name,age) values('李四',18)");
        db.execSQL("insert into user(name,age) values('王五',18)");
        db.execSQL("insert into user(name,age) values('孙六',18)");*/

        //第二种方式:利用Android中已经封装好的方法
        SQLiteDatabase db = dbOpenHelper.getWritableDatabase();

        /**
         * table  表名
         * nullColumnHack 可以为null,如果nullColumnHack为空,insert into user() values()
         * values 值 ContentValues
         */
        ContentValues values = new ContentValues();
        values.put("name", "赵四");
        values.put("age", "19");
        db.insert("user", null, values);

    }
    //修改数据
    public void updateData(){
        //第一种方式:
        /*
        SQLiteDatabase db =dbOpenHelper.getWritableDatabase();

        db.execSQL("update user set age=? where _id=?", new String[]{"20","4"});*/
    //第二种方式
        SQLiteDatabase db = dbOpenHelper.getWritableDatabase();

        /**
         * update user set amount=? where _id=?
         * 
         * table  表名
         * values 值ContentValues (key = 字段名称  value = 值)
         * whereClause  where语句后面的字句
         * whereArgs  占位符的取值
         */
        ContentValues values = new ContentValues();
        values.put("name", "刘能");
        db.update("user", values, "_id=?", new String[]{"2"});
    }
    //删除数据
    public void deleteData(){
        //第一种方式:
        /*SQLiteDatabase db =dbOpenHelper.getWritableDatabase();
        db.execSQL("delete from user where _id=4 ");*/
        //第二种方式:
        SQLiteDatabase db = dbOpenHelper.getWritableDatabase();

            /**
             * table        表名
             * whereClause  where之后的字句
             * whereArgs    占位符的取值
             */
            db.delete("user", "_id=?", new String[]{"2"});
    }
    //查询数据
    public void queryData(){
        //第一种方式:
        /*SQLiteDatabase db =dbOpenHelper.getWritableDatabase();
        //使用sql语句查询是注意,db.如rawquery得到的是个游标
        Cursor cursor=  db.rawQuery("select * from user", null);
        if(cursor.moveToNext())
        {
            //从游标中取出数据(列的编号)
            //得到列的编号cursor.getColumnIndex("name")
            String name = cursor.getString(cursor.getColumnIndex("name"));
            int age = cursor.getInt(cursor.getColumnIndex("age"));
            Log.i("info", name+","+age);
        }*/
        //第二种方式:
        SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
        /**
         * distinct         是否去除重复
         * table            表名
         * columns          查询的列名 new String[]{"name","age","amount"}
         * selection        where 之后的字句 _id=?
         * selectionArgs    条件占位符的值  new String[]{"2"}
         * groupBy          分组
         * having           放置到where之后,再次筛选
         * orderBy          排序
         * limit            区间
         */
        Cursor cursor = db.query("user", new String[]{"name","age","amount"}, "_id=?", new String[]{"2"}, null, null, null);
        {
            String name = cursor.getString(cursor.getColumnIndex("name"));
            Log.i("info", "您查询的姓名是:" + name);
        }
    }
}


对于数据库的版本库更新模糊,,,,,,,,,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: