2012-03-27 47 views
0

SQL DB有110個表,每個表有不同的列名。我必須遍歷每個表並獲取數據,以便我可以寫入XML文件。如何使用Java在Sql Server中循環所有表並提取數據

爲此,我創建了一個名爲「MasterList」的新表,其中包含所有110個表名。

try{ 
     // Connection for SQL Server. 
     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
     String url = "jdbc:sqlserver://"+strDBServer+":1433;DatabaseName=" 
       + strDBName + ";" + 
       "User="+strDBUser+";Password="+strDBPassword+";"; 
     Connection conn = DriverManager.getConnection(url); 

     if (conn != null) { 
      System.out.println("Connection Successful!"); 
     } 

     //XML Transform 
     TransformerFactory tFactory = TransformerFactory.newInstance(); 

     //Create a Statement object 
     Statement sql_stmt = conn.createStatement(); 

     //Get List of all the tables present from Master table. 
     ResultSet rs = sql_stmt.executeQuery("SELECT TableName, Order FROM " 
       + strDBName + ".[dbo].Master"); 


     while (rs.next()) 
     {    
      //Create a Statement object 
      Statement sql_stmt_1 = conn.createStatement(); 

      String strTableName=rs.getString(1).trim(); 
      int intOrder = rs.getInt(2); 

      hsMapTablesFromDB.put(strTableName,intOrder); 


      System.out.println("Hashmap --> " + hsMapTablesFromDB); 

      ResultSet rs_1 = sql_stmt_1.executeQuery("SELECT Name, LevelOfExistence, UniqueId FROM " 
       + strDBName + ".[dbo]." + strTableName); 

      String strName = rs_1.getString(1).trim(); 
      String strUnique = rs_1.getString(3).trim(); 
      hsMapDataFromIndTable.put(strName,strUnique); 

      System.out.println("hsMapDataFromIndTable" + hsMapDataFromIndTable); 

     } 
    } 
    catch(Exception e){ 
     e.printStackTrace(); 
    } 

由於每個表中的列名會有所不同,如何讓「sql_stmt_1.executeQuery」對應的列名,因此,一旦我從表中每條記錄,我不得不將其插入。

像明智的一樣,所有的110表數據必須插入XML文件。

請幫幫我。

感謝 拉姆

回答

0

嘗試在每個表

select column_name from information_schema.columns 
where table_name = 'YourTableName' //this will your iterated loop table name. 

使用下面的查詢爲列名使用這個查詢,你會得到你的表中的所有列名的,明年查詢添加這些列名錶。

然後更新XML。

相關問題