androidrawquery
1. android query 模糊查询怎么使用
关于Android中 Cursor 的query加入明御模糊查询的条件,有如下方式:
1.使用这种query方法%号前不能加',以下为示例代码:
Cursor c_test = mDatabase.query(tab_name, new String[]{tab_field02}, tab_field02+" LIKE ? ",
new String[] { "%" + str[0] + "%" }, null, null, null);
2.使用这则槐氏种query方法%号前必须加',以下为示例代码 :
Cursor c_test=mDatabase.query(tab_name, new String[]{tab_field02},tab_field02+" like '%" + str[0] + "%'孙散", null, null, null, null);
3.使用这种方式必须在%号前加' ,以下为示例代码 :
String current_sql_sel = "SELECT * FROM "+tab_name +" where "+tab_field02+" like '%"+str[0]+"%'";
Cursor c_test = mDatabase.rawQuery(current_sql_sel, null);
2. android rawQuery内的参数是什么鬼
你好,rawQuery里面的参数是数据库查询语句。就是标准的SQL语句,如果不了解,可以找点数据库的书籍看看,SQL语句是数据库最基本的,也是非常重要的知识点。这语句意思是,在dict数据库表中查询word字段或者detail字段中包含key的项。其中的*代表所有的,就是数据库中的所有字段都要查询出来,%是通配符,%key%,代表只要字符串有key就符合(key%代表以key开头,%key代表以key结尾),问号是传入参数的意思,就是将后面的两个"%" + key + "%"按顺序传入问号处
3. android 开发里的 SQLite数据库的一段 查询记录总数,谁能讲解下看不懂
//得到操作数据库的实例
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
// 调用查找书库代码并返回数据败梁指源
Cursor cursor = db.rawQuery("select count(*)from person",null);
//游标移到第一条记录渣行准备获取数察配据
cursor.moveToFirst();
// 获取数据中的LONG类型数据
Long count = cursor.getLong(0);
这些去查看Android的开发文档都有的
4. Android用query怎么进行多条件查询
SQLiteDatabase 给我提供的方法很不实用,还是建议楼主自己写sql语句,参数想怎么传都可以x0dx0a例如:Cursor c = db.rawQuery("select * from user where username=? and password = ?",x0dx0anew Stirng[]{"用户名","密码"});x0dx0ax0dx0a如果你非要调用SQLiteDatabase的query方法,那可以这样x0dx0adb.query("表名", new String[]{"字段1,字段2"}, "条件1=? and 条件2=?", new String[]{"条件1的值,条件2的值"},null,null,null)
5. android sqlite中查询数据rawQuery方法中String[] selectionArgs的详解,谢谢!!!
既然你选择了有条件的sql语句,假如你有一个data表有下面这样的数据
id name number
1 lisi 5554
2 wangwu 5556
rawQuery的sql语句select * from data where name=?,后面selectionArgs是?条件值,如果?这个占位符为null的话就表示把所有的name查出来(lisi,wangwu都会返回到Cursor结果集里),如果这个?占位符有值为wangwu,就表示只把wangwu这条数据查出来,所以?就是selectionArgs占位符,而selectionArgs就是具体条件,为null就表示全部都要,如果指定的要选wangwu就要new String[] {"wangwu"}这个占位符?的值给出来。
6. android 怎么往数据库里面添加数据
一、引入
数据库创建的问题解决了,接下来就该使用数据库实现应用程序功能的时候了。基
本的操作包括创建、读取、更新、删除,即我们通常说的 CRUD(Create, Read, Update, Delete)。
在实现这些操作的时候,我们会使用到两个比较重要的类 SQLiteDatabase 类和 Cursor 类。
二、创建表
1,execSQL(String sql):执行一条 sql 语句,且执行操作不能为 SELECT
因为它的返回值为 void,所以推荐使用 insert、update 方法等
2.,execSQL (String sql,Object[] bindArgs)
sql:执行一条 sql 语句
bindArgs:为 sql 语句中的?赋值
三、添加数据
1、execSQL(String sql)
2、使用对象的 insert 方法
ContentValues values = new ContentValues();
values.put(USERNAME, user.getUsername());
values.put(PASSWORD, user.getPassword());
db.insert(TABLE_NAME, null, values);
参数:
table:数据库中的表名
nullColumnHack:指定默认插入字段,为 null 时能插入数据
values:表示插入字段所对应的值,使用 put 方法。
四、删除数据
1、execSQL(String sql)
2、使用对象的 delete 方法
String whereClaues="_id=?";
String [] whereArgs={String.valueOf(id)};
//db.delete(TABLE_NAME, "_id="+id, null);
db.delete(TABLE_NAME, whereClaues, whereArgs);
参数
table:数据库的表名
whereClause:where 子句,比如:_id=?
whereArgs:where 子句中?的值
五、修改数据
1、execSQL(String sql)
2、使用对象的 delete 方法
ContentValues values = new ContentValues();
values.put(USERNAME, user.getUsername());
values.put(PASSWORD, user.getPassword());
String whereClaues="_id=?";
String [] whereArgs={String.valueOf(user.getId())};
db.update(TABLE_NAME, values, whereClaues, whereArgs);
参数
table:数据库的表名
values:代表要修改的值,修改方法还是 put(key,values)
whereClause:条件子句,比如 id=?,name=?
whereArgs:为 whereClause 中的?赋值,比如:new String[]{"1","张三"}
图:
参考代码:
程序内使用SQLite数据库是通过SQLiteOpenHelper进行操作
1.自己写个类继承SQLiteOpenHelper,重写以下3个方法
publicvoidonCreate(SQLiteDatabasedb)
{//创建数据库时的操作,如建表}
publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion)
{
//版本更新的操作
}
2.通过SQLiteOpenHelper的getWritableDatabase()获得一个SQLiteDatabase数据库,以后的操作都是对SQLiteDatabase进行操作。
3.对得到的SQLiteDatabase对象进行增,改,删,查等操作。
代码
packagecx.myNote;
importandroid.content.ContentValues;
importandroid.content.Context;
importandroid.content.Intent;
importandroid.database.Cursor;
importandroid.database.sqlite.SQLiteDatabase;
importandroid.database.sqlite.SQLiteOpenHelper;
//DBOptionsforlogin
publicclassDBOptions{
privatestaticfinalStringDB_NAME="notes.db";
privatestaticfinalStringDB_CREATE="createtablelogininf(nametext,pwdtext)";
{
publicDBHelper(Contextcontext){
super(context,DB_NAME,null,1);
}
@Override
publicvoidonCreate(SQLiteDatabasedb){
//TODOAuto-generatedmethodstub
//建表
db.execSQL(DB_CREATE);
}
@Override
publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){
//TODOAuto-generatedmethodstub
db.execSQL("droptableifexistslogininf");
onCreate(db);
}
}
privateContextcontext;
privateSQLiteDatabasedb;
privateDBHelperdbHelper;
publicDBOptions(Contextcontext)
{
this.context=context;
dbHelper=newDBHelper(context);
db=dbHelper.getReadableDatabase();
}
//自己写的方法,对数据库进行操作
publicStringgetName()
{
Cursorcursor=db.rawQuery("selectnamefromlogininf",null);
cursor.moveToFirst();
returncursor.getString(0);
}
publicintchangePWD(StringoldP,Stringpwd)
{
ContentValuesvalues=newContentValues();
values.put("pwd",pwd);
returndb.update("logininf",values,"pwd="+oldP,null);
}
}
insert方法插入的一行记录使用ContentValus存放,ContentValues类似于Map,它提供了put(String key, Xxx value)(其中key为数据列的列名)方法用于存入数据、getAsXxxx(String key)方法用于取出数据
7. Android GreenDao rawQuery 之 like 、 or、 = 拼接查询条件
private void queryLocomotiveList() {
List<Locomotive> locomotiveList = new ArrayList<>();
String locomotiveModeName = tvEngineMode.getText().toString().trim();
String locomotive = tvEngineNo.getText().toString().trim();
try {
//请求参数
ArrayList<String> strParamLt = new ArrayList<String>();
String queryString =
"SELECT DISTINCT * FROM " + LocomotiveDao.TABLENAME + " where 1==1 ";
if (!TextUtils.isEmpty(locomotiveModeName)) {
queryString = queryString + " and " + LocomotiveDao.Properties.TrainModelName.columnName + " = ?";
strParamLt.add(locomotiveModeName);
}
if (!TextUtils.isEmpty(locomotive)) {
queryString = queryString + " and " + LocomotiveDao.Properties.TrainNo.columnName + " like '%" + locomotive + "%' ";
}
if (!TextUtils.isEmpty(healthy) || !TextUtils.isEmpty(attention) || !TextUtils.isEmpty(repair)){
String healthyTypeStr = " and " + "(";
if (!TextUtils.isEmpty(healthy)) {
healthyTypeStr += LocomotiveDao.Properties.HealthAnalysisLevel.columnName + " = ?" + " or ";
strParamLt.add(healthy);
}
if (!TextUtils.isEmpty(attention)) {
healthyTypeStr += LocomotiveDao.Properties.HealthAnalysisLevel.columnName + " = ?" + " or ";
strParamLt.add(attention);
}
if (!TextUtils.isEmpty(repair)) {
healthyTypeStr += LocomotiveDao.Properties.HealthAnalysisLevel.columnName + " = ?";
strParamLt.add(repair);
}
if (healthyTypeStr.endsWith("or ")){
healthyTypeStr = healthyTypeStr.substring(0,healthyTypeStr.length() - 3);
}
healthyTypeStr += ")";
queryString = queryString + healthyTypeStr;
}
Log.e("queryString",queryString);
Object[] objs = strParamLt.toArray();
String[] strs = new String[objs.length];
for (int i = 0; i < objs.length; i++) {
strs[i] = objs[i].toString();
}
Log.e("strs",new Gson().toJson(strs));
Cursor cursor = DaoManager.getInstance().getDaoSession().getDatabase().rawQuery(queryString, strs);
int trainNoIndex = cursor.getColumnIndex(LocomotiveDao.Properties.TrainNo.columnName);
int trainModeNameIndex = cursor.getColumnIndex(LocomotiveDao.Properties.TrainModelName.columnName);
int healthIndex = cursor.getColumnIndex(LocomotiveDao.Properties.HealthAnalysisLevel.columnName);
while (cursor.moveToNext()) {
Locomotive bean = new Locomotive();
bean.setTrainNo(cursor.getString(trainNoIndex));
bean.setTrainModelName(cursor.getString(trainModeNameIndex));
bean.setHealthAnalysisLevel(cursor.getString(healthIndex));
locomotiveList.add(bean);
}
Log.e("locomotiveList",new Gson().toJson(locomotiveList));
} catch (Exception e) {
e.printStackTrace();
}
mAdapter.setNewData(locomotiveList);
}
8. 如何在android中用litepal查询一个已存在的数据库
其实最传统的查询数据的方式当然是使用SQL语句了,Android当中也提供了直接使用原生SQL语句来查询数据库表的方法,即SQLiteDatabase中的rawQuery()方法,方法定义如下:publicCursorrawQuery(Stringsql,String[]selectionArgs)其中,rawQuery()方法接收两个参数,第一个参数接收的就是一个SQL字符串,第二个参数是用于替换SQL语句中占位符(?)的字符串数组。rawQuery()方法返回一个Cursor对象,所有查询到的数据都是封闭在这个对象当中的,我们只要一一取出就可以了。