2012-09-04 2 views
2

Привет, ребята, я делаю приложение, которое обращается к MySQL & Базы данных MsSQL, с которыми они сталкиваются, и в зависимости от того, какой из них он выдает, распечатывает таблицы, а часть кода, которая делает это :Показать таблицы Query in my App

Connection con = DriverManager.getConnection(dbUrl, userName,password); 
Statement stmt = con.createStatement(); 
ResultSet rs; 

if (driverCN.startsWith("com.mysql")) {  // For MySQL. 
rs = stmt.executeQuery("Show Tables"); 
    } else {         // For MsSQL 
rs = stmt.executeQuery("??????"); 
     } 
// Displays the remaining Database tables. 
     System.out.println("\nThese are the remaining Database Tables:\n"); 
     while (rs.next()) { 
      String db = rs.getString(1); 
      System.out.println(db); 
     } 

Теперь то, что я хочу знать, как я могу сделать эту работу для MsSQL, а также, какой вид запроса я выполнить и передать результаты на мой результирующий набор? . (Это работает отлично для базы данных MySQL, я просто не имеют базы данных MSSQL, чтобы проверить это на только еще спасибо заранее

ответ

3

SQL Server 2005 или 2008:

SELECT * FROM information_schema.tables 

SQL Server 2000:

SELECT * FROM sysobjects WHERE xtype='U' 
+0

Спасибо, сэр, будет ли это работать с моим Result Set хотя – Mantas

+0

Не на самом деле я думаю, что ... Ваш табл e имена будут в столбце TABLE_NAME в случае 2005 или 2008, например: http://msdn.microsoft.com/en-us/library/ms186224.aspx – LaGrandMere

+0

Поэтому вам не нужно делать выбор * из выбора только Столбец TABLE_NAME. Если вы находитесь в SQL Server 2000, проверьте столбцы таблицы sysobjects, чтобы получить правильный столбец. – LaGrandMere

1

Try:

select name from sys.tables where type='u' 
+0

Спасибо, друг. – Mantas