rawqueryandroid
① 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);
}
② 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"}這個佔位符?的值給出來。
③ android rawQuery內的參數是什麼鬼
你好,rawQuery裡面的參數是資料庫查詢語句。就是標準的SQL語句,如果不了解,可以找點資料庫的書籍看看,SQL語句是資料庫最基本的,也是非常重要的知識點。這語句意思是,在dict資料庫表中查詢word欄位或者detail欄位中包含key的項。其中的*代表所有的,就是資料庫中的所有欄位都要查詢出來,%是通配符,%key%,代表只要字元串有key就符合(key%代表以key開頭,%key代表以key結尾),問號是傳入參數的意思,就是將後面的兩個"%" + key + "%"按順序傳入問號處
④ android怎麼實現sqlite的增刪改查
SQL語句大全
--語 句 功 能
--數據操作
SELECT --從資料庫表中檢索數據行和列
INSERT --向資料庫表添加新數據行
DELETE --從資料庫表中刪除數據行
UPDATE --更新資料庫表中的數據
--數據定義
CREATE TABLE --創建一個資料庫表
DROP TABLE --從資料庫中刪除表
ALTER TABLE --修改資料庫表結構
CREATE VIEW --創建一個視圖
DROP VIEW --從資料庫中刪除視圖
CREATE INDEX --為資料庫表創建一個索引
DROP INDEX --從資料庫中刪除索引
CREATE PROCEDURE --創建一個存儲過程
DROP PROCEDURE --從資料庫中刪除存儲過程
CREATE TRIGGER --創建一個觸發器
DROP TRIGGER --從資料庫中刪除觸發器
CREATE SCHEMA --向資料庫添加一個新模式
DROP SCHEMA --從資料庫中刪除一個模式
CREATE DOMAIN --創建一個數據值域
ALTER DOMAIN --改變域定義
DROP DOMAIN --從資料庫中刪除一個域
--數據控制
GRANT --授予用戶訪問許可權
DENY --拒絕用戶訪問
REVOKE --解除用戶訪問許可權
--事務控制
COMMIT --結束當前事務
ROLLBACK --中止當前事務
SET TRANSACTION --定義當前事務數據訪問特徵
--程序化SQL
DECLARE --為查詢設定游標
EXPLAN --為查詢描述數據訪問計劃
OPEN --檢索查詢結果打開一個游標
FETCH --檢索一行查詢結果
CLOSE --關閉游標
PREPARE --為動態執行准備SQL 語句
EXECUTE --動態地執行SQL 語句
DESCRIBE --描述准備好的查詢
---局部變數
declare @id char(10)
--set @id = '10010001'
select @id = '10010001'
---全局變數
---必須以@@開頭
--IF ELSE