SQLite

安卓

  • SQLite入门

SQLite入门

轻量级的、0配置的、适用于嵌入式设备的数据库。
遵循SQL语句。

App内部的数据库文件位于:/data/data/程序包名/databases/*.db
Demo演示:

//MyHelper.java
//继承数据库助手类
public class MyHelper extends SQLiteOpenHelper {
     
    private static final String TAG = "MyHelper";

    /**
     * 
     * @param context 上下文,看到这个在外部调用的时候就传入 当前类名.this
     * @param name    数据库的名字
     * @param version 数据的版本(必须是正整数,且新版本要大于老版本)
     */
    public MyHelper(Context context, String name, int version) {
     
        super(context, name, null, version);
        Log.d(TAG, "MyHelper->Constructor");
    }

    /**
     * 数据库创建的回调
     * 
     * @param db 新创建的数据库对象
     */
    @Override
    public void onCreate(SQLiteDatabase db) {
     
        Log.d(TAG, "onCreate");
        // 创建一张表
        db.execSQL("CREATE TABLE student(id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL)");
    }

    /**
     * 数据库升级的回调
     * 
     * @param db         升级的数据库对象
     * @param oldVersion 数据库的老版本
     * @param newVersion 数据库的新版本
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
     
        Log.d(TAG, "onUpgrade:" + oldVersion + "->" + newVersion);
    }
}

增删改查:

public class MainActivity extends Activity implements OnClickListener {
     

    private Button mBtnCreate, mBtnVersion, mBtnInsert, mBtnDelete, mBtnUpdate, mBtnSelect;

    // 自定义数据库助手类对象
    private MyHelper mHelper;

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

        mBtnCreate = (Button) findViewById(R.id.btn_create_table);
        mBtnVersion = (Button) findViewById(R.id.btn_version);
        mBtnInsert = (Button) findViewById(R.id.btn_insert);
        mBtnDelete = (Button) findViewById(R.id.btn_delete);
        mBtnUpdate = (Button) findViewById(R.id.btn_update);
        mBtnSelect = (Button) findViewById(R.id.btn_select);

        mBtnCreate.setOnClickListener(this);
        mBtnVersion.setOnClickListener(this);
        mBtnInsert.setOnClickListener(this);
        mBtnDelete.setOnClickListener(this);
        mBtnUpdate.setOnClickListener(this);
        mBtnSelect.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
     

        switch (v.getId()) {
     
        case R.id.btn_create_table:
            createDatabase();
            break;
        case R.id.btn_version:
            upgradeVersion(4);
            break;
        case R.id.btn_insert:
            insertData();
            break;
        case R.id.btn_delete:
            deleteData();
            break;
        case R.id.btn_update:
            updateData();
            break;
        case R.id.btn_select:
            selectData();
            break;
        }

    }

    /**
     * 创建数据库和表
     */
    private void createDatabase() {
     
        // SQLite数据库会生成一个数据库文件,扩展名是.db或.db3
        mHelper = new MyHelper(MainActivity.this, "school_info.db", 1);
        // 目的只是为了创建出数据库文件和表,所以获得一个只读的数据库对象后立刻关闭
        mHelper.getReadableDatabase().close();
        // 展示消息
        showToast("数据库创建成功!");
    }

    private void upgradeVersion(int version) {
     
        // SQLite数据库会生成一个数据库文件,扩展名是.db或.db3
        mHelper = new MyHelper(MainActivity.this, "school_info.db", version);
        // 目的只是为了创建出数据库文件和表,所以获得一个只读的数据库对象后立刻关闭
        mHelper.getReadableDatabase().close();
        // 展示消息
        showToast("数据库已经执行升级操作!");
    }
    
    private void insertData() {
     
        mHelper = new MyHelper(MainActivity.this, "school_info.db", 4);
        //获得一个可写的数据库对象
        SQLiteDatabase db = mHelper.getWritableDatabase();
        //准备一个要插入的数据对象
        ContentValues cv = new ContentValues();
        //添加要插入的数据(如果有多列就多次添加)
        //参数一:列名;参数二:数值
        cv.put("name", "Tom");
        
        //参数一:要插入的表名
        //参数三:要插入的数据
        db.insert("student", null, cv);
        //关闭数据库
        db.close();
        // 展示消息
        showToast("已执行插入操作!");
    }
    
    private void deleteData() {
     
        mHelper = new MyHelper(MainActivity.this, "school_info.db", 4);
        //获得一个可写的数据库对象
        SQLiteDatabase db = mHelper.getWritableDatabase();
        //删除数据
        //参数一:要从哪个表中删除
        //参数二:Where子句,即删除的条件
        //参数三:如果参数二中有?,那么替换的值
        db.delete("student", "id=1", null);
        
        //关闭数据库
        db.close();
        // 展示消息
        showToast("已执行删除操作!");
    }
    
    private void updateData() {
     
        mHelper = new MyHelper(MainActivity.this, "school_info.db", 4);
        //获得一个可写的数据库对象
        SQLiteDatabase db = mHelper.getWritableDatabase();
        //准备一个要更新的数据对象
        ContentValues cv = new ContentValues();
        //添加要插入的数据(如果有多列就多次添加)
        //参数一:列名;参数二:数值
        cv.put("name", "Petter");
        //更新数据
        //参数一:要更新的表名
        //参数二:要更新的值
        //参数三:Where子句,即更新的条件
        //参数四:如果参数三中有?,那么替换的值
        db.update("student", cv, "id=?", new String[] {
     "2"});
        
        //关闭数据库
        db.close();
        // 展示消息
        showToast("已执行更新操作!");
    }
    
    private void selectData() {
     
        mHelper = new MyHelper(MainActivity.this, "school_info.db", 4);
        //获得可读的数据库对象
        SQLiteDatabase db = mHelper.getReadableDatabase();
        //调用查询的方法
        //参数一:要查询的表,相当于FROM子句
        //参数二:要查询的列,相当于SELECT子句
        //参数三:查询的条件,相当于WHERE子句
        //参数四:如果参数三种有?,表示参数三中的?数据
        //参数五:相当于GROUP BY子句
        //参数六:相当于HAVING子句
        //参数七:相当于ORDER BY子句
        Cursor cursor = db.query("student", new String[] {
     "id","name"}, "id>=4", null, null, null, null);
        //循环取出所有数据
        while(cursor.moveToNext() != false) {
     
            //先把列名转换为列序号
            int indexId = cursor.getColumnIndex("id");
            int indexName = cursor.getColumnIndex("name");
            //通过序号获得值
            int id = cursor.getInt(indexId);
            String name = cursor.getString(indexName);
            Log.d("MainActivity", id+"-"+name);
        }
        //关闭游标
        cursor.close();
        //关闭数据库
        db.close();
        // 展示消息
        showToast("已执行查询操作!结果请看Log");
    }

    /**
     * 弹个Toast,为了方便后续调用
     * 
     * @param message Toast展示出的消息
     */
    private void showToast(String message) {
     
        Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show();
    }
}

你可能感兴趣的:(Android,android,sqlite)