zoukankan      html  css  js  c++  java
  • Android SQLite最简单demo实现(增删查改)

      本来不太想写这篇博客的,但是看到网上的关于android数据库操作的博文都讲得很详细,对于像我这样的新手入门了解SQLite的基本操作有一定难度,所以我参考了网上的一些博客文章,并自己亲自摸索了一遍,希望写出这么一篇博文来记录SQLite的最基本操作,同时也希望能够对android的新手们有些帮助。

    参考博客:http://www.20864.com/201247/274.html

    这里只是一个示范性的demo,并没实现什么具体功能,只实现了对数据库的增删查改操作。

    以下是实现demo的步骤:

    第一步,创建自己的SQL操作类 DBHelper

    package com.example.SQLiterTest;
    
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteDatabase.CursorFactory;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.util.Log;
    
    /**
     * 可以通过SQLiteOpenHelper的以下两个方法来或得SQLiteDatabase的对象:
     * getReadableDatabase() 创建或者打开一个查询数据库
     * getWritableDatabase() 创建或者打开一个可写数据库 
     */
    public class DBHelper extends SQLiteOpenHelper {
    
        /**
         * 构造函数,必须实现
         * @param context 上下文路径
         * @param name 数据库名称
         * @param factory 可选游标工厂,通常为NULL
         * @param version 当前数据库版本号
         */
    
        private SQLiteDatabase mDataBase = null;
        private static final String USER_TABLE = "user";
    
        public DBHelper(Context context, String name, CursorFactory factory,
                        int version) {
            super(context, name, factory, version);
            mDataBase = this.getWritableDatabase();
        }
    
    
        //数据库第一次创建时会调用,一般在其中创建数据库表
        @Override
        public void onCreate(SQLiteDatabase db) {
            //使用execSQL()方法执行SQL语句,如果没有异常,这个方法没有返回值
            db.execSQL("create table user(id INTEGER PRIMARY KEY AUTOINCREMENT," +
                    "name varchar(20), address TEXT)");
            Log.v("mytab","-->onCreate");
        }
    
        //当数据库需要修改的时候,Android系统会主动的调用这个方法。
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
    
        //打开数据库时的回调函数,一般不会用
        @Override
        public void onOpen(SQLiteDatabase db) {
            super.onOpen(db);
            Log.v("mytab","-->onOpen");
        }
    
        @Override
        public synchronized void close() {
            super.close();
        }
    
    }

    第二步,在Activity的onCreate函数中实现增删查改的功能。

    package com.example.SQLiterTest;
    
    import android.app.Activity;
    import android.content.ContentValues;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.os.Bundle;
    import android.util.Log;
    
    public class MyActivity extends Activity {
        /**
         * Called when the activity is first created.
         */
        private SQLiteDatabase db;
    
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    
    
            // 获取处理SQLiteOpenHelper的子类的SQLite的实例,如果只读,可以采用getReadableDatabase(),
            // 这个例子我们奖通过SQLiteDatabase实例的操作,来进行对数据进行增删改查询,采用可写的方式。
            db = new DBHelper(getApplicationContext(),"mydb",null,1).getWritableDatabase();
            ContentValues cv = new ContentValues();
            cv.put("name", "JackLi");
            cv.put("address", "QingYuan");
            //插入
            db.insert("user",null,cv);
            Log.v("mytab","-->have insert");
            //更新
            ContentValues cv2 = new ContentValues();
            cv2.put("name","HaiXin");
            db.update("user",cv2,"name=?",new String[]{"JackLi"});
            Log.v("mytab","-->have updated");
    
            //查询
            String[] columns = {"name", "address"};
            Cursor cursor = db.query("user",columns,"name = ?", new String[] {"HaiXin"},null,null,null);
            while (cursor.moveToNext())
            {
                String myname = cursor.getString(cursor.getColumnIndex("name"));
                Log.v("mytab","---->"+myname);
            }
    
            //删除
            db.delete("user","name = ?",new String[]{"HaiXin"});
            Log.v("mytab","-->have delete");
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            db.close();
        }
    }

      

      总的来说整个过程只有两步,在第一次运行这个demo时,会创建一个名叫"mydb"的数据库和一个叫“user”的数据表。

    运行程序后,在logcat中会显示以下一些信息:

    05-19 08:08:30.864    1802-1802/com.example.SQLiterTest V/mytab﹕ -->onOpen
    05-19 08:08:30.872    1802-1802/com.example.SQLiterTest V/mytab﹕ -->have insert
    05-19 08:08:30.888    1802-1802/com.example.SQLiterTest V/mytab﹕ -->have updated
    05-19 08:08:30.888    1802-1802/com.example.SQLiterTest V/mytab﹕ ---->HaiXin
    05-19 08:08:30.900    1802-1802/com.example.SQLiterTest V/mytab﹕ -->have delete

      通过logcat中的信息可以很清楚的看到程序的执行过程。

  • 相关阅读:
    loaded some nib but the view outlet was not set
    指标评比
    IOS DEVELOP FOR DUMMIES
    软件测试题二
    javascript select
    DOM节点类型详解
    mysql操作
    UVA 10055
    solutions for 'No Suitable Driver Found For Jdbc'
    解决git中文乱码问题
  • 原文地址:https://www.cnblogs.com/starwolf/p/3737089.html
Copyright © 2011-2022 走看看