导航:首页 > 操作系统 > android数据库query

android数据库query

发布时间:2022-05-30 04:44:48

① “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);

② Android 中数据库查询方法query() 中的selectionArgs 参数只能在编译之前确定,这怎么实现动态查询

网上找来的
Android 中涉及数据库查询的地方一般都会有一个 query() 方法,而这些 query 中有大都(全部?)会有一个参数 selectionArgs,比如下面这个 android.database.sqlite.SQLiteDatabase.query():
view plain to clipboardprint?
public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)
public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)
    selection 参数很好理解,就是 SQL 语句中 WHERE 后面的部分,即过滤条件, 比如可以为 id=3 AND name='Kevin Yuan' 表示只返回满足 id 为 3 且 name 为 "Kevin Yuan" 的记录。
    再实际项目中像上面那样简单的“静态”的 selection 并不多见,更多的情况下要在运行时动态生成这个字符串,比如
view plain to clipboardprint?
public doQuery(long id, final String name) { 
  mDb.query("some_table", // table name 
        null, // columns 
        "id=" id " AND name='" name "'", // selection 
        //...... 更多参数省略 
  ); 
}
public doQuery(long id, final String name) {
  mDb.query("some_table", // table name
        null, // columns
        "id=" id " AND name='" name "'", // selection
        //...... 更多参数省略
  );
}
在这种情况下就要考虑一个字符转义的问题,比如如果在上面代码中传进来的 name 参数的内容里面有单引号('),就会引发一个 "SQLiteException syntax error .... "。
    手工处理转义的话,也不麻烦,就是 String.replace() 调用而已。但是 Android SDK 为我们准备了 selectionArgs 来专门处理这种问题:
view plain to clipboardprint?
public void doQuery(long id, final String name) { 
  mDb.query("some_table", // table name 
        null, // columns 
        "id=" id " AND name=?", // selection 
        new String[] {name}, //selectionArgs 
        //...... 更多参数省略 
  ); 
  // ...... 更多代码 
}
public void doQuery(long id, final String name) {
  mDb.query("some_table", // table name
        null, // columns
        "id=" id " AND name=?", // selection
        new String[] {name}, //selectionArgs
        //...... 更多参数省略
  );
  // ...... 更多代码
}
也就是说我们在 selection 中需要嵌入字符串的地方用 ? 代替,然后在 selectionArgs 中依次提供各个用于替换的值就可以了。在 query() 执行时会对 selectionArgs 中的字符串正确转义并替换到对应的 ? 处以构成完整的 selection 字符串。 有点像 String.format()。
    不过需要注意的是 ? 并不是“万金油”,只能用在原本应该是字符串出现的地方。比如下面的用法是错误的:
view plain to clipboardprint?
public void doQuery(long id, final String name) { 
  mDb.query("some_table", // table name 
        null, // columns 
        "? = " id " AND name=?", // selection XXXX 错误!? 不能用来替换字段名 
        new String[]{"id", name}, //selectionArgs 
      //...... 更多参数省略 
  ); 
  // ...... 更多代码 
}

③ android数据库 怎么查找id=4 用db.query()这个函数怎么写

Cursor cursor = sqLiteDatabase.query(true, Table,new String[]{需要查找的列}, id + "= 4" , null, null, null, null, null);

④ android 如何连接数据库

这种方式通常连接一个外部的数据库,第一个参数就是数据库文件,这个数据库不是当前项目中生成的,通常放在项目的Assets目录下,当然也可以在手机内,如上面参数那个目录,前提是那个文件存在且你的程序有访问权限。

另一种使用数据库的方式是,自己创建数据库并创建相应的数据库表,参考下面的代码:
public class DatabaseHelper extends SQLiteOpenHelper {
//构造,调用父类构造,数据库名字,版本号(传入更大的版本号可以让数据库升级,onUpgrade被调用)
public DatabaseHelper(Context context) {
super(context, DatabaseConstant.DATABASE_NAME, null, DatabaseConstant.DATABASE_VERSION);
}
//数据库创建时调用,里面执行表创建语句.
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(createVoucherTable());
}
//数据库升级时调用,先删除旧表,在调用onCreate创建表.
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + DatabaseConstant.TABLE_NAME);
onCreate(db);
}
//生成 创建表的SQL语句
private String createVoucherTable() {
StringBuffer sb = new StringBuffer();
sb.append(" CREATE TABLE ").append(DatabaseConstant.TABLE_NAME).append("( ").append(“ID”)
.append(" TEXT PRIMARY KEY, ")
.append(“USER_ID”).append(" INTEGER, ").append(“SMS_CONTENT”).append(" TEXT ) ");
return sb.toString();
}
} 继承SQLiteOpenHelper并实现里面的方法.

之后:
//得到数据库助手类
helper
=
new
DatabaseHelper(context);
//通过助手类,打开一个可读写的数据库连接
SQLiteDatabase
database
=
helper.getReadableDatabase();
//查询表中所有记录
database.query(DatabaseConstant.TABLE_NAME,
null,
null,
null,
null,
null,
null);

⑤ Android用query怎么进行多条件查询

SQLiteDatabase 给我提供的方法很不实用,还是建议楼主自己写sql语句,参数想怎么传都可以
例如:Cursor c = db.rawQuery("select * from user where username=? and password = ?",
new Stirng[]{"用户名","密码"});

如果你非要调用SQLiteDatabase的query方法,那可以这样
db.query("表名", new String[]{"字段1,字段2"}, "条件1=? and 条件2=?", new String[]{"条件1的值,条件2的值"},null,null,null)

⑥ android怎么查询数据库中的

public
void
query(char
word)
{
string[]
columns
=
{
"id",
"cnword",
"bh"
};//
表的column名称
//
获取数据库实例,根据实际情况修改
sqlitedatabase
database
=
sqlitedatabase.openorcreatedatabase(
"/data/data/com.example.cx/databases/ghydb.db",
null);
cursor
cursor
=
null;
try
{
cursor
=
database.query("hanzibihua",
columns,
"cnword=?",
new
string[]
{
string.valueof(word)
},
null,
null,
null);
while
(null
!=
cursor
&&
cursor.movetonext())
{//
数据库中一个汉字如果存有多个,循环获取
cursor.getstring(cursor.getcolumnindex("bh"));//
这里获取笔画
}
}
catch
(exception
e)
{
e.printstacktrace();
//
todo:
handle
exception
}
finally
{
if
(null
!=
cursor)
{
cursor.close();
}
}
}

阅读全文

与android数据库query相关的资料

热点内容
自己购买云主服务器推荐 浏览:419
个人所得税java 浏览:761
多余的服务器滑道还有什么用 浏览:189
pdf劈开合并 浏览:27
不能修改的pdf 浏览:750
同城公众源码 浏览:488
一个服务器2个端口怎么映射 浏览:297
java字符串ascii码 浏览:78
台湾云服务器怎么租服务器 浏览:475
旅游手机网站源码 浏览:332
android关联表 浏览:945
安卓导航无声音怎么维修 浏览:332
app怎么装视频 浏览:430
安卓系统下的软件怎么移到桌面 浏览:96
windows拷贝到linux 浏览:772
mdr软件解压和别人不一样 浏览:904
单片机串行通信有什么好处 浏览:340
游戏开发程序员书籍 浏览:860
pdf中图片修改 浏览:288
汇编编译后 浏览:491