sqlite操作指南
来源:互联网 发布:淘宝咸鱼卖东西安全吗 编辑:程序博客网 时间:2024/06/07 02:15
数据库的访问需借助SQLiteOpenHelper类来实现
1.新建一个继承自SQLiteOpenHelper的子类DatabaseHelper.通过父类的构造函数新建数据库.
当前类中顺便也在重载函数onCreate中创建了需要用到的表user,表中含有username,password字段.
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()
移动光标到上一行
具体实现:
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关键字后面的部分。
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
- sqlite操作指南
- SQLite操作指南(SQLite version 3.6.21)
- Sqlite数据库操作指南(1)
- Sqlite数据库操作指南(2)
- SQLite数据库安装及基本操作指南
- SQLite权威指南---SQLite介绍
- SQLite:Java操作SQLite
- SQLite操作
- SQLite操作
- 操作sqlite
- sqlite 操作
- SQLite操作
- sqlite操作
- sqlite操作
- SQLite操作
- SQLite操作
- sqlite操作
- SQLite操作
- Swift快速入门(五)集合
- hybrid App开发中关于返回键的逻辑控制
- my97datepicker日期限制
- alarm and pause Functions
- Linux3.5内核以后的路由下一跳缓存
- sqlite操作指南
- 蓝桥杯 第三届 奇怪的比赛
- SQLiteDatabase里面的简单操作数据库的方法
- 前端素材解析—利用linear制作复杂的边框效果
- eclipse安装svn插件
- [Java]读取文件方法大全
- 获取XIB和Storyboard生成的控件
- IOS 之copy(浅拷贝)和mutableCopy(深拷贝) 以及strong 和weak理解
- [LeetCode]94 二叉树中序遍历