Java 返回基于SQL的动态数组
我想创建一个方法,返回一个包含数据库中所有值的数组 这就是我到目前为止所做的:Java 返回基于SQL的动态数组,java,jdbc,Java,Jdbc,我想创建一个方法,返回一个包含数据库中所有值的数组 这就是我到目前为止所做的: package ch.test.zt; import java.sql.*; class Database { static boolean getData(String sql) { // Ensure we have mariadb Driver in classpath try { Class.forName("org.mariadb.jdb
package ch.test.zt;
import java.sql.*;
class Database {
static boolean getData(String sql) {
// Ensure we have mariadb Driver in classpath
try {
Class.forName("org.mariadb.jdbc.Driver");
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
String url = "jdbc:mariadb://localhost:3306/zt_productions?user=root&password=test";
try {
Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
return rs.next();
}
catch (SQLException e) {
e.printStackTrace();
}
return false;
}
}
这意味着,我可以使用用户提供的Database.getDataSELECT*,从数据库中获得一个包含我所需的所有数据的数组
在上面的代码中,我使用的是return rs.next;,这绝对是错误的。返回true。rs.next;只要告诉您的结果集中是否有数据,即true或false,为了使用或创建实际数据的数组,您必须迭代结果集并从中创建用户对象,并且必须将该对象添加到用户列表中 还要更改签名
static List<User> getData(String sql)
如果不知道要获取的表的列,则可以使用以下方法查找相同的列:
现在您知道了所有信息,然后可以使用它构造适当的查询
从这里开始工作
DatabaseMetaData metadata = connection.getMetaData();
ResultSet resultSet = metadata.getColumns(null, null, "users", null);
while (resultSet.next()) {
String name = resultSet.getString("COLUMN_NAME");
String type = resultSet.getString("TYPE_NAME");
int size = resultSet.getInt("COLUMN_SIZE");
System.out.println("Column name: [" + name + "]; type: [" + type + "]; size: [" + size + "]");
}
}
你到底不清楚什么?你读过的JavaDocs吗?嗯,这不是真正的动态。如果我不知道用户名、用户名等列名怎么办。?
DatabaseMetaData metadata = connection.getMetaData();
ResultSet resultSet = metadata.getColumns(null, null, "users", null);
while (resultSet.next()) {
String name = resultSet.getString("COLUMN_NAME");
String type = resultSet.getString("TYPE_NAME");
int size = resultSet.getInt("COLUMN_SIZE");
System.out.println("Column name: [" + name + "]; type: [" + type + "]; size: [" + size + "]");
}
}