程序里面执行两条不同的sql语句,存放在同一个ResultSet里面,ResultSet会保留两个sql的内容还是会冲掉第一条的内容
问题补充:
具体是这样的,我要获取数据库表的字段信息,有可能是同义词表,也可能是远程数据库的表,我用
if(存在同义词表){
rs=s.execute(同义词表);
}
else if(存在dblink){
rs=s2.execute(dblink的表);
}
这样,如果表是远程数据库的表,可以检索出字段信息,但是如果是同义词表,就会被冲掉,哪位高手提供一个更好的方法,谢谢了先。
问题补充:
如果我想保留两个sql的结果呢,因为本地数据库与远程数据库的表名有可能一样,这样要怎么保存,谢谢。
问题补充:
附上源代码:
想的到的结果事,如果传入一个表是本机上的,不是同义词表,直接查找出它的字段,如果是同义词表,先找到它的schema,在找出它的字段,如果是远程数据库的表,通过dblink查找出它的字段。现在问题是,输入一个远程数据库的表,检索不出来,返回为空。望各位解决一下,谢谢了。
public List<String> getColByTab(String tableName) throws SQLException {
ResultSet resultSet_synonym;
ResultSet resultSet_dblink, resultSet22;
if (hasDefaultSchema()) {
String sql = "SELECT A.COLUMN_NAME as name"
+ " FROM DBA_TAB_COLUMNS A " + "WHERE A.OWNER = '"
+ defaultSchema + "' AND A.TABLE_NAME = '" + tableName
+ "'";
resultSet = stmt.executeQuery(sql);
} else {
String sql1 = "select object_name, OWNER from dba_objects where object_type='DATABASE LINK'";
resultSet_dblink = stmt.executeQuery(sql1);
while (resultSet_dblink.next()) {
String StrRS = resultSet_dblink.getString(1);
System.out.println("dblink=============" + StrRS);
String sql3 = "select owner from all_tables@" + StrRS
+ "" + " where table_name=upper('" + tableName
+ "')";
resultSet22 = stmt.executeQuery(sql3);
while (resultSet22.next()) {
String sql_link = "select COLUMN_NAME from DBA_TAB_COLUMNS@"
+ StrRS
+ " where OWNER='"
+ resultSet22.getString(1).trim()
+ "'and TABLE_NAME='" + tableName + "'";
resultSet = stmt.executeQuery(sql_link);
}
}
String sql = "select TABLE_OWNER,TABLE_NAME "
+ "from dba_synonyms where synonym_name like '" + tableName
+ "'";
resultSet_synonym = stmt.executeQuery(sql);
while (resultSet_synonym.next()) {
sql = "SELECT COLUMN_NAME as name FROM DBA_TAB_COLUMNS "
+ "WHERE OWNER = '" + resultSet_synonym.getString(1)
+ "'" + " and TABLE_NAME like '"
+ resultSet_synonym.getString(2) + "'";
resultSet = stmt.executeQuery(sql);
}
}
if (resultSet == null) {
return null;
}
List<String> columnList = new ArrayList<String>();
while (resultSet.next()) {
for (int i = 1; i < ((ResultSetMetaData) resultSet.getMetaData())
.getColumnCount() + 1; i++) {
columnList.add(resultSet.getString(i));
}
}
return columnList;
}
相关推荐
在原版P6Spy中,它会捕获并记录查询结果集(`ResultSet`),这对于调试和性能分析非常有用。但根据描述,这个修改版去除了这一特性,可能是为了减少日志输出的复杂性,或者因为某些场景下不需要查看`ResultSet`的...
在iOS开发中,数据持久化是一项重要的任务,用于在应用退出后保留用户数据或应用程序状态。SQLite3是一种流行的选择,因为它轻量级、可靠且功能强大。本实例将聚焦于如何在iPhone应用中使用SQLite3进行数据持久化...
- String对象是不可变的,意味着一旦创建,其内容就不能改变。`String str = "abc"`创建了一个共享的字符串常量,而`new String(data)`则基于字符数组创建了一个新的String对象。 - `charAt(int index)`方法返回...
计算机二级等级考试主要涵盖计算机基础知识、程序设计语言、数据库、操作系统、网络技术等多个方面的内容。以下是对部分试题的详细解析: 1. 不同进制数的比较:在计算机科学中,不同进制的数需要转换成同一进制...
5. Python保留字:Python的保留字是语言中具有特殊含义的词汇,如`del`、`pass`和`not`,而`string`不是Python的保留字,它是字符串的别名。 6. 关系模型:在关系数据库中,一个关系对应于一张二维表,也就是我们...
在MySQL中,可以创建名为`score`的表,包含以下字段:`num`(学号,主键,类型为varchar(12)),`name`(姓名,类型为varchar(20)),以及`score`(成绩,类型为decimal(5,2),保留两位小数)。这样的设计能够满足...
接着,执行映射的SQL语句,iBATIS会创建PreparedStatement实例并执行,从ResultSet中构建返回的对象;最后,根据不同的操作(如更新或查询),返回受影响的行数或查询结果对象。 在基础知识点部分,我们需要了解...
7. 删除`photo`目录下的文件但保留文件夹,应检查`File`对象是否为文件(`isFile()`),如果是文件则删除。 8. `session`对象的`isNew()`方法用于检查会话是否为新会话。 9. 配置文件`web.xml`位于JSP应用程序的`...
JDBC API既支持数据库访问的高级抽象,也保留了对数据库的具体功能的支持。本文将基于提供的“JDBC数据库操作通用类”代码片段,深入探讨其设计原理及实现细节。 #### 二、代码结构解析 ##### 1. 类定义与成员变量...
10. `ResultSet`对象:在数据库操作中,`ResultSet`用于存储查询结果,可以遍历查询结果集。 【填空题】 11. 可移植性主要通过字节码和类加载机制保证。 12. 程序包声明格式:`package 包名;` 13. 动态联编(运行...
- EL的保留字是不能在表达式中使用的特殊词汇,如"true"、"false"等。 - EL可以通过`<c:if>`、`<c:for>`等JSTL标签库进一步增强其功能。 2. **JDBC概述**: - JDBC是Java连接数据库的标准接口,它是一系列的类和...
22. ResultSet接口:`ResultSet`接口是Java数据库连接(JDBC)中用于处理查询结果的接口,`next()`和`close()`是其中的方法。 23. WWW地址格式:URL中的主机名与路径、文件名间使用`/`分隔。 24. 二维数组元素访问...
6. **数值四舍五入和截断**:`ROUND`函数用于四舍五入,第二个参数为保留的小数位数;`TRUNC`函数用于直接截断小数部分。对于`ROUND(45.925,0)`,结果是46,对于`TRUNC(45.925)`,结果是45,因此选项B正确。 7. **...
这种方式可以使得Java应用程序无需编写特定于某个数据库的代码即可访问多种类型的数据库,同时也保留了ODBC的一些优势,如对不同数据库的支持等。 #### 三、JDBC-ODBC桥接的工作原理 1. **Java应用程序**:首先,...
有状态Session Bean保存了会话期间的客户端信息,无状态则不保留。 - **Entity Bean**:持久化数据,对应数据库表,分为容器管理的实体Bean(CMP)和bean管理的实体Bean(BMP)。 - **Message-Driven Bean**:用于...
然而,有时候由于项目需求或特定场景,我们可能仍然需要使用原生的JDBC,并通过一些技巧来提高代码的灵活性和可维护性。这就是“运用反射做的一个经典JDBC模板”所要探讨的主题。 反射是Java语言的一个强大特性,它...
而通过 `new String()` 创建的字符串则会在堆中创建一个新的对象,即使其内容相同。例如: ```java String s1 = "123"; String s2 = "123"; String s3 = new String("123"); ``` - `s1 == s2` 返回 `true`,因为 `s1...
25. JDBC(Java Database Connectivity)是Java语言连接数据库的标准接口,其中`Connection`类用于建立与数据库的连接,`PreparedStatement`类用于执行预编译的SQL语句,`ResultSet`类则用于存储查询结果,而`...
15. **ResultSet接口**:在Java中,`ResultSet`接口用于处理SQL查询结果,`next()`用于移动到下一行,`close()`用于关闭结果集。 16. **打开数据库**:在数据库操作中,`OPEN DATABASE`命令用于打开数据库。 17. *...