查詢數(shù)據(jù)庫任意兩張表的全關聯(lián)字段

練手寫的小程序,還算是有點用。做個記錄

import oracle.jdbc.driver.OracleDriver;

import java.sql.*;

import java.util.ArrayList;

import java.util.Properties;

import antlr.collections.List;

public class Findlink {

private static String USERNAMR = "";

? ? private static String PASSWORD = "";

? ? private static String DRVIER = "oracle.jdbc.OracleDriver";

? ? private static String URL = "jdbc:oracle:thin:@192.XX.XXX.XXXX:1521:XXX";



? ? // 創(chuàng)建一個數(shù)據(jù)庫連接

? ? Connection connection = null;

? ? // 創(chuàng)建預編譯語句對象,一般都是用這個而不用Statement

? ? PreparedStatement pstm = null;

? ? // 創(chuàng)建一個結果集對象

? ? ResultSet rs = null;

// ? ? 查詢

? ? public void SelectData() {

? ? //表一獲取所有的列名

? ? ? ? connection = getConnection();

? ? ? ? //在這里輸入想查找的兩個表名,運行即可

? ? ? ? String t1Name="XXX";

? ? ? ? String t2Name="XXXX";

? ? ? ? String sql = "select t1.COLUMN_NAME from USER_TAB_COLUMNS t1 where t1.TABLE_NAME = upper('"+t1Name+"') and t1.data_type='VARCHAR2'";

? ? //表二獲取所有的列名

? ? ? ? String sql2 = "select t2.COLUMN_NAME from USER_TAB_COLUMNS t2 where t2.TABLE_NAME = upper('"+t2Name+"') and t2.data_type='VARCHAR2'";


? ? ? ? ArrayList list1 =? new ArrayList();//t1所有表頭

? ? ? ? ArrayList list2 =? new ArrayList();//t2所有表頭

? ? ? ? try {

? ? ? ? //輸出表一所有列名

? ? ? ? ? ? pstm = connection.prepareStatement(sql);

? ? ? ? ? ? rs = pstm.executeQuery();

? ? ? ? ? ? while (rs.next()) {

? ? ? ? ? ? ? ? String id = rs.getString("COLUMN_NAME");

? ? ? ? ? ? ? ? list1.add(id);

? ? ? ? ? ? }

? ? ? ? ? ? //輸出表二所有列名

? ? ? ? ? ? pstm = connection.prepareStatement(sql2);

? ? ? ? ? ? rs = pstm.executeQuery();

? ? ? ? ? ? while (rs.next()) {

? ? ? ? ? ? ? ? String id = rs.getString("COLUMN_NAME");

? ? ? ? ? ? ? ? list2.add(id);

? ? ? ? ? ? }

? ? ? ? ? ? for (int i = 0; i < list1.size(); i++) {

? ? ? ? ? ? for (int j = 0; j < list2.size(); j++) {

? ? ? ? ? ? //剔除空列,有空格的值

? ? ? ? ? ? String sqls="select t1."+list1.get(i)+",t2."+list2.get(j)+" from "+t1Name+" t1,"+t2Name+" t2 where t1."+list1.get(i)+"= t2."+list2.get(j)

? ? ? ? ? ? +" and trim (t1."+list1.get(i)+") is not null and trim (t2."+list2.get(j)+") is not null ";

? ? ? ? ? ? pstm = connection.prepareStatement(sqls);

? ? ? ? ? ? ? ? ? rs = pstm.executeQuery();? ?

? ? ? ? ? ? ? ? ? if(list1.get(i).equals(list2.get(j))){

? ? ? ? ? ? ? ? ? System.out.println(sqls);

? ? ? ? ? ? ? ? ? System.out.println("字段名相同 t1."+list1.get(i)+",t2."+list2.get(j));

? ? ? ? ? ? ? ? ? System.out.println("●----------------------------------● ");

? ? ? ? ? ? ? ? ? } else if(rs.next()){

? ? ? ? ? ? ? ? ? ? System.out.println(sqls);

? ? ? ? ? ? ? ? ? ? System.out.println("全關聯(lián)有數(shù)據(jù)的字段 t1."+list1.get(i)+",t2."+list2.get(j));

? ? ? ? ? ? ? ? ? ? System.out.println("●----------------------------------● ");

? ? ? ? ? ? ? ? ? //不為空的情況

? ? ? ? ? ? ? ? ? }else{

// ? ? ? ? ? ? ? ? ? System.out.println(sqls);

// ? ? ? ? ? ? ? ? ? System.out.println("Yes");

? ? ? ? ? ? ? ? ? //為空的情況

? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? pstm.close();

? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? ? ? System.out.println("完成");

? ? ? ? } catch (SQLException e) {

? ? ? ? ? ? e.printStackTrace();

? ? ? ? } finally {

? ? ? ? ? ? ReleaseResource();

? ? ? ? }

? ? }

? ? /**

? ? * 獲取Connection對象

? ? *

? ? * @return

? ? */

? ? public Connection getConnection() {

? ? ? ? try {

? ? ? ? ? ? Class.forName(DRVIER);

? ? ? ? ? ? connection = DriverManager.getConnection(URL, USERNAMR, PASSWORD);

? ? ? ? ? ? System.out.println("成功連接數(shù)據(jù)庫");

? ? ? ? } catch (ClassNotFoundException e) {

? ? ? ? ? ? throw new RuntimeException("class not find !", e);

? ? ? ? } catch (SQLException e) {

? ? ? ? ? ? throw new RuntimeException("get connection error!", e);

? ? ? ? }

? ? ? ? return connection;

? ? }

? ? /**

? ? * 釋放資源

? ? */

? ? public void ReleaseResource() {

? ? ? ? if (rs != null) {

? ? ? ? ? ? try {

? ? ? ? ? ? ? ? rs.close();

? ? ? ? ? ? } catch (SQLException e) {

? ? ? ? ? ? ? ? e.printStackTrace();

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? if (pstm != null) {

? ? ? ? ? ? try {

? ? ? ? ? ? ? ? pstm.close();

? ? ? ? ? ? } catch (SQLException e) {

? ? ? ? ? ? ? ? e.printStackTrace();

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? if (connection != null) {

? ? ? ? ? ? try {

? ? ? ? ? ? ? ? connection.close();

? ? ? ? ? ? } catch (SQLException e) {

? ? ? ? ? ? ? ? e.printStackTrace();

? ? ? ? ? ? }

? ? ? ? }

? ? }

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

? ? ? ? //創(chuàng)建OperateOracle對象

? ? ? ? Findlink find=new Findlink();

? ? ? ? find.getConnection();

? ? ? ? find.SelectData();

? ? ? ? find.ReleaseResource();

}

}

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容