日期:2014-05-20  浏览次数:20753 次

查询mysql库中所有表名的问题。。。
 sql="show tables";
         rs=statement.executeQuery(sql);         
         while(rs.next())
         {
          System.out.println(rs.getString(2));
}

库中明明有三个表,但是只有System.out.println(rs.getString(1));时,才会输出第一个表名,其它两个无效。。。
------最佳解决方案--------------------
引用:
引用:

show tables;

执行结果只有一列吧,怎么会有rs.getString(2)?

千真万确有三个表存在。。。

不会啊,你用的是mysql吧,我刚搭了环境试了试,没问题。
还有rs.getString(2)会报错的。


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

public class TestMySql {

public static void main(String[] args) {

Connection con = null;
java.sql.PreparedStatement statment = null;
ResultSet rs = null;

try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager
.getConnection("jdbc:mysql://localhost/mysql?user=root&password=");
con.setAutoCommit(false);
String sql = "show tables;";

statment = con.prepareStatement(sql);
rs = statment.executeQuery();
while (rs.next()) {
System.out.println(rs.getString(1));
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
rs.close();
statment.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}

打印结果:

columns_priv
db
func
help_category
help_keyword
help_relation
help_topic
host
proc
procs_priv
tables_priv
time_zone
time_zone_leap_second
time_zone_name
time_zone_transition
time_zone_transition_type
user

------其他解决方案--------------------
con = DriverManager.getConnection("jdbc:mysql://localhost/mysql?user=root&password=");

此处的mysql要换成你所有查询的db名.

------其他解决方案--------------------
帅哥,你在MYSQL里执行show tables,出来的结果是不是只有一列,你为什么要给他写rs.getString(1),故意和自己过不去?
引用:
Java code
 sql="show tables";
             rs=statement.executeQuery(sql);            
             while(rs.next())
             {
                 System.out.println(rs.getString(2));
}

库中明……

------其他解决方案--------------------
show tables;

执行结果只有一列吧,怎么会有rs.getString(2)?
------其他解决方案--------------------