import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
public class FindMessageFormAllTab {
public static String DRIVER = "oracle.jdbc.driver.OracleDriver";
public static String DATAORA = "jdbc:oracle:thin:@192.168.1.2:1521:orcl";
public static String USER = "tiger";
public static String PASSWORD = "dragon";
public static Connection conn = null;
public static void conOracle(){
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
conn = DriverManager.getConnection(DATAORA,USER,PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
}
}
// 得到数据库中所有表名
public List<String> findAllTableName(){
conOracle();
List<String> tableNameList = new ArrayList<String>();
String selSql = "select table_name from user_tables order by table_name";
try {
Statement statement = conn.createStatement();
ResultSet rs = statement.executeQuery(selSql);
while(rs.next()){
tableNameList.add(rs.getString("table_name"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return tableNameList;
}
// 得到根据查询条件所用的表
public Set<String> selRecordsFromTab(String id){
List<String> tables = findAllTableName();
Set<String> set = new HashSet<String>();
for(int i = 0; i < tables.size(); i++){
String selSql = "select * from " + tables.get(i) + " where id = '" + id + "'";
try {
Statement statement = conn.createStatement();
ResultSet rs = null;
try{
rs = statement.executeQuery(selSql);
}catch(SQLException e){
continue;
}
while(rs.next()){
set.add(tables.get(i));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return set;
}
// 去除重复的表名,并显示
private void dispSet(String id){
Set<String> set = selRecordsFromTab(id);
Iterator<String> iter = set.iterator();
while(iter.hasNext()){
Object tableName = iter.next();
System.out.println(tableName.toString());
}
}
public static void main(String[] args){
new FindMessageFormAllTab().dispSet("112101FA0B");
}
}
本文介绍了一个Java程序,该程序连接到Oracle数据库并从多个表中检索特定ID的数据,最终输出包含该ID的所有表名,避免了重复输出。

7658

被折叠的 条评论
为什么被折叠?



