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對象,所有查詢到的數據都是封閉在這個對象當中的,我們只要一一取出就可以了。