SQLite使用基础
2015-10-30 20:18
288 查看
数据库的增删改查操作,实现对封装了bean的操作。建表:
@Override
publicvoidonCreate(SQLiteDatabasedb){
Stringsql="CREATETABLE"+TABLE_NAME+"("+_ID
+"INTEGERPRIMARYKEYAUTOINCREMENT,"+_USERNAME
+"TEXTNOTNULL,"+_PASSWORD+"TEXT)";
Log.i(TAG,sql);
db.execSQL(sql);
}增加数据:①利用sql语句
publicvoidadd(Useru){
Stringsql="INSERTINTO"+TABLE_NAME+"("+_USERNAME+","
+_PASSWORD+")VALUES(?,?)";
Log.i(TAG,sql);
db.execSQL(sql,newObject[]{u.getUserName(),u.getPassWord()});
}②高级做法
publicvoidadd_(Useru){
ContentValuesvalues=newContentValues();
values.put(_USERNAME,u.getUserName());
values.put(_PASSWORD,u.getPassWord());
db.insert(TABLE_NAME,null,values);
}db.insert(TABLE_NAME,null,values);①参数一:表名②参数二:可选的,一般为空,当values参数为空或者里面没有内容的时候,insert是会失败的(底层数据库不允许插入一个空行),为了防止这种情况,我们要在这里设置一个列名,到时候如果发现将要插入的行为空行时,就会将你指定的这个列名的值设为null,然后再向数据库中插入。删除数据:①利用sql语句
publicvoiddel(intid){
Stringsql="DELETEFROM"+TABLE_NAME+"WHERE"+_ID+"=?";
Log.i(TAG,sql);
db.execSQL(sql,newObject[]{id});
}②高级做法
publicvoiddel_(intid){
StringwhereClause=_ID+"=?";
String[]whereArgs={id+""};
db.delete(TABLE_NAME,whereClause,whereArgs);
}db.delete(TABLE_NAME,whereClause,whereArgs)参数一:表名参数二:where后面添加的条件,看好格式参数三:条件中?参数的值的数组更改数据:①利用sql
publicvoidupdate(Useru){
Stringsql="UPDATE"+TABLE_NAME+"SET"+_USERNAME+"=?,"+_PASSWORD+"=?"+"WHERE"+_ID+"=?";
Log.i(TAG,sql);
db.execSQL(sql,newObject[]{u.getUserName(),u.getPassWord(),u.getId()});
}②推荐做法
publicvoidupdate_(Useru){
ContentValuesvalues=newContentValues();
values.put(_USERNAME,u.getUserName());
values.put(_PASSWORD,u.getPassWord());
StringwhereClause=_ID+"=?";//可以有多个条件的
String[]whereArgs={u.getId()+""};
db.update(TABLE_NAME,values,whereClause,whereArgs);
}db.update(TABLE_NAME,values,whereClause,whereArgs):荐做法参数一:表名参数二:更改之后的ContentValues类型的值参数三:条件语句,格式参数四:条件中?号所对应的值查询数据:①sql语句做法
publicList<User>queryAll(){
List<User>list=newArrayList<User>();
Stringsql="SELECT*FROM"+TABLE_NAME;
Log.i(TAG,sql);
Cursorcursor=db.rawQuery(sql,null);
while(cursor.moveToNext()){
Useru=newUser();
u.setId(cursor.getInt(cursor.getColumnIndex(_ID)));
u.setUserName(cursor.getString(cursor.getColumnIndex(_USERNAME)));
u.setPassWord(cursor.getString(cursor.getColumnIndex(_PASSWORD)));
list.add(u);
}
returnlist;
}②高级用法
publicList<User>queryAll_(){
List<User>list=newArrayList<User>();
Cursorcursor=db.query(TABLE_NAME,null,null,null,null,null,
null);
while(cursor.moveToNext()){
Useru=newUser();
u.setId(cursor.getInt(cursor.getColumnIndex(_ID)));
u.setUserName(cursor.getString(cursor.getColumnIndex(_USERNAME)));
u.setPassWord(cursor.getString(cursor.getColumnIndex(_PASSWORD)));
list.add(u);
}
returnlist;
}db.query(table,columns,selection,selectionArgs,groupBy,having,orderBy)上面都给空,代表就是select*fromuser;参数一:表名参数二:需要查询的字段参数三:筛选的语句,类似于where中的条件参数四:筛选条件中的值参数四:为分组增加条件参数五:分组之后的条件参数六:排序还有三个构造方法。看名称就能看懂。实现分页的功能的查询:
publicCursorquery(intcurrentPage,intpageSize){
intstart=(currentPage-1)*pageSize;
Stringlimit=start+","+pageSize;//和sql语句基本一样
Cursorcursor=db.query(TABLE_NAME,null,null,null,null,null,null,limit);
returncursor;
}整体的代码:
importjava.util.ArrayList;
importjava.util.List;
importandroid.content.ContentValues;
importandroid.content.Context;
importandroid.database.Cursor;
importandroid.database.sqlite.SQLiteDatabase;
importandroid.database.sqlite.SQLiteOpenHelper;
importandroid.util.Log;
importcom.mixm.bean.User;
publicclassUserDBHelper{
privatestaticfinalStringTAG="UserDBHelper";
privatestaticfinalStringDATABASE_NAME="user.db";
privatestaticfinalintVERSISON=1;
privatestaticfinalStringTABLE_NAME="user";
privatestaticfinalString_ID="id";
privatestaticfinalString_USERNAME="username";
privatestaticfinalString_PASSWORD="password";
privateUserHelperuserHelper;
privateSQLiteDatabasedb;
//内部类
classUserHelperextendsSQLiteOpenHelper{
publicUserHelper(Contextcontext){
super(context,DATABASE_NAME,null,VERSISON);
}
@Override
publicvoidonCreate(SQLiteDatabasedb){
Stringsql="CREATETABLE"+TABLE_NAME+"("+_ID
+"INTEGERPRIMARYKEYAUTOINCREMENT,"+_USERNAME
+"TEXTNOTNULL,"+_PASSWORD+"TEXT)";
Log.i(TAG,sql);
db.execSQL(sql);
}
@Override
publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){
}
}
publicUserDBHelper(Contextcontext){
userHelper=newUserHelper(context);
db=userHelper.getWritableDatabase();
}
//普通
publicvoidadd(Useru){
Stringsql="INSERTINTO"+TABLE_NAME+"("+_USERNAME+","
+_PASSWORD+")VALUES(?,?)";
Log.i(TAG,sql);
db.execSQL(sql,newObject[]{u.getUserName(),u.getPassWord()});
}
//高级一般做法
publicvoidadd_(Useru){
ContentValuesvalues=newContentValues();
values.put(_USERNAME,u.getUserName());
values.put(_PASSWORD,u.getPassWord());
db.insert(TABLE_NAME,null,values);
}
publicvoiddel(intid){
Stringsql="DELETEFROM"+TABLE_NAME+"WHERE"+_ID+"=?";
Log.i(TAG,sql);
db.execSQL(sql,newObject[]{id});
}
publicvoiddel_(intid){
StringwhereClause=_ID+"=?";
String[]whereArgs={id+""};
db.delete(TABLE_NAME,whereClause,whereArgs);
}
publicvoidupdate(Useru){
Stringsql="UPDATE"+TABLE_NAME+"SET"+_USERNAME+"=?,"
+_PASSWORD+"=?"+"WHERE"+_ID+"=?";
Log.i(TAG,sql);
db.execSQL(sql,
newObject[]{u.getUserName(),u.getPassWord(),u.getId()});
}
publicvoidupdate_(Useru){
ContentValuesvalues=newContentValues();
values.put(_USERNAME,u.getUserName());
values.put(_PASSWORD,u.getPassWord());
StringwhereClause=_ID+"=?";
String[]whereArgs={u.getId()+""};
db.update(TABLE_NAME,values,whereClause,whereArgs);
}
publicList<User>queryAll(){
List<User>list=newArrayList<User>();
Stringsql="SELECT*FROM"+TABLE_NAME;
Log.i(TAG,sql);
Cursorcursor=db.rawQuery(sql,null);
while(cursor.moveToNext()){
Useru=newUser();
u.setId(cursor.getInt(cursor.getColumnIndex(_ID)));
u.setUserName(cursor.getString(cursor.getColumnIndex(_USERNAME)));
u.setPassWord(cursor.getString(cursor.getColumnIndex(_PASSWORD)));
list.add(u);
}
returnlist;
}
publicList<User>queryAll_(){
List<User>list=newArrayList<User>();
Cursorcursor=db
.query(TABLE_NAME,null,null,null,null,null,null);
while(cursor.moveToNext()){
Useru=newUser();
u.setId(cursor.getInt(cursor.getColumnIndex(_ID)));
u.setUserName(cursor.getString(cursor.getColumnIndex(_USERNAME)));
u.setPassWord(cursor.getString(cursor.getColumnIndex(_PASSWORD)));
list.add(u);
}
returnlist;
}
}
相关文章推荐
- SQL的作用
- Oracle性能调优(AWR)
- SQL中的通配符
- 50个常用sql语句
- mysql查询今天、昨天、7天、近30天、本月、上一月 数据
- 机房收费系统——数据库设计说明书
- PostgreSQL——启动脚本
- iOS sqlite数据库的基本使用方法
- oracle常用SQL语句
- oracle跟踪常用内部事件号
- mysql中kill掉所有锁表的进程
- Case函数的使用及注意点
- RHEL/CentOS 7安装 PowerDNS(MariaDB) 、PowerAdmin
- Redis简介和简单应用
- MySQL优化
- Redis(一):在Mac上安装Redis
- SqlServer代理执行[分发清除: distribution] 无法删除快照文件
- oracle order by subquery innerview(嵌套子查询中不允许出现order by 语句)
- Oracle疑问贴
- mysql主从复制、读写分离到数据库水平拆分及库表散列