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中的信息可以很清楚的看到程序的执行过程。

  • 相关阅读:
    【分享】你敢来挑战?程序员等级
    [css]我要用css画幅画(二)
    [css]我要用css画幅画(一)
    关于学习javascript的一些建议
    孩子们眼中的世界
    全职妈妈再就业辅助计划
    程序员如何打扫卫生并向老婆汇报
    《夏洛特烦恼》观后感
    软件开发之: 做“工程”还是做“艺术品”
    2014年年度总结
  • 原文地址:https://www.cnblogs.com/starwolf/p/3737089.html
Copyright © 2011-2022 走看看