gpt4 book ai didi

java - 在 Java derby 中获取表中的所有行

转载 作者:行者123 更新时间:2023-12-02 07:44:44 26 4
gpt4 key购买 nike

我正在尝试获取已创建并填充的表中的所有行。这是我目前正在尝试做的功能,显然它不起作用。什么也没输出。

    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;
}

最佳答案

您可以使用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。

因此,尽管这可能是实际问题的答案,但用它做任何有用的事情将需要更多的逻辑。我们可以帮助您,但现在我只是猜测您想这样做......

关于java - 在 Java derby 中获取表中的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11068445/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com