sqlite操作指南

来源:互联网 发布:淘宝咸鱼卖东西安全吗 编辑:程序博客网 时间:2024/06/07 02:15
数据库的访问需借助SQLiteOpenHelper类来实现

1.新建一个继承自SQLiteOpenHelper的子类DatabaseHelper.通过父类的构造函数新建数据库.

当前类中顺便也在重载函数onCreate中创建了需要用到的表user,表中含有username,password字段.

import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class DatabaseHelper extends SQLiteOpenHelper {    private static final String DB_NAME = "mydata.db"; //数据库名称    private static final int version = 1; //数据库版本         public DatabaseHelper(Context context) {        super(context, DB_NAME, null, version);        // TODO Auto-generated constructor stub    }     @Override    public void onCreate(SQLiteDatabase db) {        String sql = "create table user(username varchar(20) not null , password varchar(60) not null );";        db.execSQL(sql);    }        @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {        // TODO Auto-generated method stub     }}




2.在程序中合适的时机下创建之前help类实例,创建数据库跟表.

        DatabaseHelper database = new DatabaseHelper(this);//这段代码放到Activity类中才用this
        SQLiteDatabase db = null;
        db= database.getWritableDatabase();

3.具体表格中的操作

a.插入一条记录:

所有的数据库操作都可以通过两种方式来实现,一种是原始命令行形式,如:

        String sql = "insert into user(username,password) values ('Jack Johnson','iLovePopMuisc')";
        db.execSQL(sql);//执行SQL语句
另一种是通过SQLiteDatabase类提供的接口来实现,



如:

ContentValues cv = new ContentValues();//实例化一个ContentValues用来装载待插入的数据cv.put("username","Jack Johnson");//添加用户名
cv.put("password","iLovePopMusic"); //添加密码
db.insert("user",null,cv);//执行插入操作


b.删除一条记录

方法一:

String sql = "delete from user where username='Jack Johnson'";//删除操作的SQL语句
db.execSQL(sql);//执行删除操作
方法二:

String whereClause = "username=?";//删除的条件
String[] whereArgs = {"Jack Johnson"};//删除的条件参数
db.delete("user",whereClause,whereArgs);//执行删除
c.更新一条记录

方法一:

String sql = "update [user] set password = 'iHatePopMusic' where username='Jack Johnson'";//修改的SQL语句
db.execSQL(sql);//执行修改
方法二:

ContentValues cv = new ContentValues();//实例化ContentValues
cv.put("password","iHatePopMusic");//添加要更改的字段及内容
String whereClause = "username=?";//修改条件
String[] whereArgs = {"Jack Johnson"};//修改条件的参数
db.update("user",cv,whereClause,whereArgs);//执行修改
d.遍历操作

遍历操作依赖与Cursor类,里面封装了如下方法:

关于 Cursor 的重要方法:
close()
关闭游标,释放资源
copyStringToBuffer(int columnIndex, CharArrayBuffer buffer)
在缓冲区中检索请求的列的文本,将将其存储
getColumnCount()
返回所有列的总数
getColumnIndex(String columnName)
返回指定列的名称,如果不存在返回-1
getColumnIndexOrThrow(String columnName)
从零开始返回指定列名称,如果不存在将抛出IllegalArgumentException 异常。
getColumnName(int columnIndex)
从给定的索引返回列名
getColumnNames()
返回一个字符串数组的列名
getCount()
返回Cursor 中的行数
moveToFirst()
移动光标到第一行
moveToLast()
移动光标到最后一行
moveToNext()
移动光标到下一行
moveToPosition(int position)
移动光标到一个绝对的位置
moveToPrevious()
移动光标到上一行
具体实现:

        Cursor c = db.query("user",null,null,null,null,null,null);//查询并获得游标        Toast.makeText(this.getApplicationContext(), String.valueOf(c.getCount()), Toast.LENGTH_LONG).show();        c.moveToFirst();        for(int i=0;i<c.getCount();i++)        {            String username = c.getString(c.getColumnIndex("username"));                        mapnamelist.add(username);            c.moveToNext();        }

e.查询子集操作

query(table, columns, selection, selectionArgs, groupBy, having, orderBy, limit)方法各参数的含义:
table:表名。相当于select语句from关键字后面的部分。如果是多表联合查询,可以用逗号将两个表名分开。
columns:要查询出来的列名。相当于select语句select关键字后面的部分。
selection:查询条件子句,相当于select语句where关键字后面的部分,在条件子句允许使用占位符“?”
selectionArgs:对应于selection语句中占位符的值,值在数组中的位置与占位符在语句中的位置必须一致,否则就会有异常。
groupBy:相当于select语句group by关键字后面的部分
having:相当于select语句having关键字后面的部分
orderBy:相当于select语句order by关键字后面的部分,如:personid desc, age asc;
limit:指定偏移量和获取的记录数,相当于select语句limit关键字后面的部分。


0 0
原创粉丝点击