Android 开发中实际使用sql语句不多,那么android就提供了一个"叉叉"helper的类:SQLiteOpenHelper,但是开发人员是通过继承这个类来实现对数据进行操作的.

步骤如下:

<0> : 定义一个管理数据管理类:

public class SQLManager {        public static final String SQ_LITE_DATABASE_TABLE="tsql";    public static final String SQL_TABLE_CREATE="create table "+SQ_LITE_DATABASE_TABLE+"{" +            "id INTEGER PRIMARY KEY AUTOINCREMENT,user TEXT,password TEXT,nickname varchar(20) }";    public static final String SQL_DROP_EXSIT_TABLE="drop table if exist tsql";    public static final String TABLE_ID_FIELD="id";    public static final String TABLE_USER_FIELD = "user";    public static final String TABLE_PASSWORD_FIELD = "password";    public static final String TABLE_NICKNAME_FIELD = "nickname";}

 

<1> 先要新建一个几成SQLiteOpenHelper的类:

public class SQLHelper extends SQLiteOpenHelper{}

<2> 这个新建的类还必须要有构造函数,数据库名和版本号可以构建中传入,也可以直接传入常量,如下面:

public SQLHelper(Context context){                    super(context,DATABASE_NAME,null,DATABASE_VERSION);            }        public SQLHelper(Context context, String name, CursorFactory factory,            int version) {        super(context, name, factory, version);        // TODO Auto-generated constructor stub    }
private static final String DATABASE_NAME="user_db";    private static final int DATABASE_VERSION=1;

<3> 在重载onCreate中创建或者打开数据库:

@Override    public void onCreate(SQLiteDatabase sqldb) {        // TODO Auto-generated method stub        sqldb.execSQL(SQLManager.SQL_TABLE_CREATE);    }

<4> 打开数据库后,即可以开始操作了,在操作之前需要认识一个类ContentValues,由于android提供封装好的操作方法,操作方法在插入更新数据时,需要开发人员现将一个集合的数据打好包,然后传入操作方法中,而APP的数据就要放大一个"包中",相当于一个中间人,那么ContentValues就起到打包或者说中间人的作用:

ContentValues cvs = new ContentValues();

用其打包数据:把数据放到指定的字段中即可:

cvs.put(SQLManager.TABLE_USER_FIELD, user);        cvs.put(SQLManager.TABLE_PASSWORD_FIELD, password);        cvs.put(SQLManager.TABLE_NICKNAME_FIELD, nickname);

其次操作数据时,要么就是读取数据,要么就是写入数据,一般情况下如果读取数据时,我们就获得读取数据库的对象就可以了,同样写入:

SQLiteDatabase sqldb=this.getReadableDatabase();
SQLiteDatabase sqldb = this.getWritableDatabase();

<5> : 执行插入操作数据:

public boolean insert(String user, String password, String nickname) {        SQLiteDatabase sqldb = this.getWritableDatabase();        ContentValues cvs = new ContentValues();        cvs.put(SQLManager.TABLE_USER_FIELD, user);        cvs.put(SQLManager.TABLE_PASSWORD_FIELD, password);        cvs.put(SQLManager.TABLE_NICKNAME_FIELD, nickname);        // public long insert(String table, String nullColumnHack, ContentValues        // values)        Long result = sqldb                .insert(SQLManager.SQ_LITE_DATABASE_TABLE, null, cvs);        if (result == -1) {            return false;        } else {            return true;        }    }

<6> 执行更新操作:注意操作过程中条件的设置

public boolean update(String user, String password, String nickname) {        SQLiteDatabase sqldb = this.getWritableDatabase();        String where = SQLManager.TABLE_USER_FIELD + "=?";        String whereargs[] = { user };        ContentValues cvs = new ContentValues();        cvs.put(SQLManager.TABLE_USER_FIELD, user);        cvs.put(SQLManager.TABLE_PASSWORD_FIELD, password);        cvs.put(SQLManager.TABLE_NICKNAME_FIELD, nickname);        int result = sqldb.update(SQLManager.SQ_LITE_DATABASE_TABLE, cvs,                where, whereargs);        if (result == 0) {            return false;        } else {            return true;        }    }

<7> 执行删除数据操作:

public boolean delete(String user) {        SQLiteDatabase sqldb = this.getWritableDatabase();        String where = SQLManager.TABLE_USER_FIELD + "=?";        String whereargs[] = { user };        int result = sqldb.delete(SQLManager.SQ_LITE_DATABASE_TABLE, where,                whereargs);        if (result == 0) {            return false;        } else {            return true;        }    }

<8> : 执行查询操作:

public void query(){                SQLiteDatabase sqldb=this.getReadableDatabase();                String columns[]={SQLManager.TABLE_USER_FIELD,SQLManager.TABLE_PASSWORD_FIELD,SQLManager.TABLE_NICKNAME_FIELD};        String orderby=SQLManager.TABLE_ID_FIELD;                Cursor cr=sqldb.query(SQLManager.SQ_LITE_DATABASE_TABLE, columns, null, null, null, null, null);                cr.moveToFirst();        while(!cr.isAfterLast()){                        Log.i(TAG,"user : " + cr.getString(1) + " password : " + cr.getString(2)+" nickname : "+ cr.getString(3));                                    cr.moveToNext();        }                    }

这个里面query可以传递查询条件,一般这个方法可以这样写:需要返回游标,上面直接打印了.

public Cursor  query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)

<9> 写完上面辅助操作数据库类,进入具体使用阶段:

private SQLHelper sqlhelper;
sqlhelper = new SQLHelper(this);
sqlhelper.insert(...)....

 

具体的例子网上很多,个人觉得只要看得懂API,再要记住操作流程,当然实际上寡人是做了demo的.

 

 

 

转载于:https://www.cnblogs.com/MMLoveMeMM/articles/3627383.html

更多相关文章

  1. “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
  2. Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
  3. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  4. 我的android 第28天 - Activity(一)
  5. android 视频的缩图制作
  6. In android studio,cannot load 2 facets-unknown facet type:an
  7. 【30篇突击 android】源码统计 十五
  8. Android(安卓)Intent的几个主要用法--发短信,打电话,发彩信
  9. 技术转载:Android开发之常用代码片段

随机推荐

  1. CaysnPrinter开发包接口说明文档 - Print
  2. android 发送短信,彩信,邮件代码
  3. Android(安卓)无法接收开机广播的问题
  4. android 服务
  5. Android下拉列表控件spinner-andoid学习
  6. Android(安卓)Dialog自定义宽高
  7. android 打开文件
  8. Android之Touch事件分发机制
  9. Android音乐播放器简单示例
  10. Android(安卓)计时器,定时功能