我正在尝试获取已创建并填充的表中的所有行。这是我目前正在尝试的功能,显然它不起作用。没有任何东西。
public static void getTable(String[] table) throws ClassNotFoundException, SQLException{
DatabaseMetaData metadata = null;
Class.forName(driver);
conn = DriverManager.getConnection(connectionURL);
metadata = conn.getMetaData();
ResultSet res = metadata.getTables(null, null, null, table);
while(res.next()){
System.out.println(res.toString());
}
res.close();
conn.close();
}
任何想法我做错了什么?
哇,经过几个小时的游戏组合。我有一些东西。它会给我们所有人带来烦恼,但对于那些可能有这种问题的人来说,我想出的就是从整个表格中获取数据。
编辑:现在返回一个HashMap,其行号和值由','。
分隔 /**
* Gets all rows of a table. Returns a HashMap.
*
* Returns a HashMap with each table row value separated by ','.
* Each row in a new count in the hashmap. Example:
*
* Returns:
*
* <1, "FirstName,LastName,Age">
*
*
* @param table
* @return HashMap<Int, String>
* @throws ClassNotFoundException
* @throws SQLException
*/
@SuppressWarnings("null")
public static HashMap<Integer, String> getTable(String table) throws ClassNotFoundException, SQLException{
DatabaseMetaData metadata = null;
Class.forName(driver);
conn = DriverManager.getConnection(connectionURL);
String sql = "select * from " + table; // use actual name of the table
PreparedStatement statement = conn.prepareStatement(sql);
ResultSet res = statement.executeQuery();
ResultSetMetaData md = res.getMetaData();
HashMap<Integer,String> hash = new HashMap();
int count = md.getColumnCount();
String done;
int y = 1;
while(res.next()){
for(int x = 1; x < md.getColumnCount(); x = x+md.getColumnCount()){
done = res.getObject(x).toString() + "," + res.getObject(x+1).toString();
}
hash.put(y, done);
y++;
}
res.close();
conn.close();
if(!hash.isEmpty())
return hash;
else
return null;
}
答案 0 :(得分:2)
您可以使用sql语句并执行它,例如:
String sql = "select * from <nameOfTable>"; // use actual name of the table
PreparedStatement statement = connection.prepareStatement(sql);
ResultSet rs = statement.execute();
这就是你所要求的。
现在,您不知道接下来会做什么。既然您说您试图避免知道列的名称,那么您实际上必须查询元数据以获取这些名称。您可以按列位置从结果集中获取数据,但您无法知道列的数据类型是什么(string,int,blob)。
您可以遍历从元数据中获取的列以查找其名称,以及(可能更重要的)其数据类型,以便您可以在要获取的每个列的结果集上调用getInt或getString。
因此,虽然这可能是实际问题的答案,但对它做任何有用的事情都需要更多的逻辑。我们可以帮助你,但是现在我只是猜你想要这样做......