当前位置:首页 » 操作系统 » 动态查询数据库

动态查询数据库

发布时间: 2022-09-08 12:07:36

⑴ 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 
      //...... 更多参数省略 
  ); 
  // ...... 更多代码 
}

⑵ 如何动态的指定查询条件,从外部数据库中获取数据记录

没分是没人帮你回答的
组件
外部数据库
超级列表框
Access数据库(表超级列表框1.显示表格线
(外部数据库1.尾记录后
(句柄)
=假)
索引

⑶ 动态查询数据库,rst怎么办

RST应该是ResultSet对象,可以创建类来获得查询结果,前提是你需要自己封装方法把结果集中的每个属性对应到你封装对象的属性值上

⑷ vb 6 accsee多数据库动态查询

此类问题属于 SQL问题
比方2个 数据库
a.mdb
b.mdb
在a数据库内建立查询
select * from a union select * from b in " & CurrentProject.Path + "\b.mdb

⑸ vb6 动态查询 sqlserver 2008 R2数据库中的数据

看你的字段时间,是前面最小后面最大,假设你时间最大的是出库完成(如果不是,你自己修改下)时间范围限定应该限定最小时间字段和最大时间字段都在范围内,时间差用datediff函数,不过这玩意取整数,如果用小时为单位的话,一小时50分钟也算一小时,所以取分钟为单位
如下(假定最小日期是订单录入,最大日期是出库完成,不是的话自己修改字段名)

SQL = "SELECT * from 表名 where datediff( minute," & Combo1(1).Text & " , " & Combo1(2).Text & " )> " & Text1.Text & "*60 AND 订单录入 >= '" & _
Format(DTPicker1(0).Value, "yyyy-MM-dd") & " 0:0:1' AND 出库完成 <= '" & Format(DTPicker1(1).Value, "yyyy-MM-dd") & " 23:59:59'"

如果不知道哪个字段是最大日期哪个字段是最小日期,那就只能每个字段都加限定条件了
这是两个字段判断,继续and下去,所有字段判断一遍,都不超出范围才算
Dim SQL As String
SQL = "SELECT * from 表名 where datediff( minute," & Combo1(1).Text & " , " & Combo1(2).Text & " )> " & Text1.Text & "*60 AND (订单录入 between '" & _
Format(DTPicker1(0).Value, "yyyy-MM-dd") & "' AND '" & Format(DTPicker1(1).Value, "yyyy-MM-dd") & "') AND (订单审核 between '" & _
Format(DTPicker1(0).Value, "yyyy-MM-dd") & "' AND '" & Format(DTPicker1(1).Value, "yyyy-MM-dd") & "')"

⑹ 跪求JSP页面如何动态查询数据库(ACCESS)

(1)获取文本框内容
(2)连接数据库
(3)查询数据库
(4)插入数据
(5)以表格形式输出数据库中的数据

⑺ 我想在vb2008中利用ado.net动态查询access数据库,怎么办呢什么思路

就是用SQL语句中的SELECT语句,你可以多看看SELECT语句,在VB中用动态字符串连接成一个SELECT语句就可以。

⑻ sql数据库多表联合动态查询

select * from (
select * from info_200601
union
select * from info_200602
union
.
.
. )
oder by sn desc

没有验证,不知道行不行

⑼ 动态报表,如何动态查询,数据库移植

1、动态报表可以用Table控件拼成。
2、业务需要查询的统计方式和字段,用单独的数据库表做记录。
3、移植数据库很麻烦,可以用工厂三层来写,写两套数据访问
4、统计方式可以切换,但是如果加新的统计方式还是要改代码;数据访问类可以切换,但是两个数据库的访问类和sp必须都写好。

最后你问的这个问题,sp不好改也得改,不然就得动代码,想无缝移植哪有那么简单。

热点内容
sqlserver注册表清理 发布:2024-05-18 20:13:14 浏览:989
linux删除连接 发布:2024-05-18 20:06:56 浏览:820
linux搭建云服务器平台 发布:2024-05-18 19:52:21 浏览:400
安卓怎么关闭美易订阅 发布:2024-05-18 19:29:16 浏览:642
苹果手机配置代理服务器怎么开 发布:2024-05-18 19:29:07 浏览:229
服务器屏蔽了别人的ip 发布:2024-05-18 19:10:09 浏览:619
怎么获取ins服务器地址 发布:2024-05-18 19:10:03 浏览:30
仙方一般是什么配置 发布:2024-05-18 18:53:43 浏览:159
黑莓安卓手机主题下载到哪里 发布:2024-05-18 18:47:18 浏览:57
汤靖轩编程 发布:2024-05-18 18:46:04 浏览:533