从java中的查询结果创建类对象
我浪费了很多时间试图找到解决办法,但我做不到。我上了3节课: 数据库、表和列:从java中的查询结果创建类对象,java,oracle,Java,Oracle,我浪费了很多时间试图找到解决办法,但我做不到。我上了3节课: 数据库、表和列: public class Database { private List<Table> table; private String name; ... public class Table { private String name; private List<Column> column; ... public class Column { pr
public class Database {
private List<Table> table;
private String name; ...
public class Table {
private String name;
private List<Column> column; ...
public class Column {
private String columnName;
private String dataType;
private int data_length; ...
我使用以下代码获取并执行查询:
public Database getTargetDbStructure(String username, String password, String url, String dbName) {
Database db = new Database();
db.setName(dbName);
List<Table> tableStructureList = new ArrayList<Table>();
try (Connection con = super.getConnectionTargetDb(username, password, url)) {
String query = "SELECT DISTINCT(TABLE_NAME) FROM USER_TAB_COLUMNS";
PreparedStatement pstmt = con.prepareStatement(query);
ResultSet rs = pstmt.executeQuery();
while (rs.next()){
String query2 = "SELECT COLUMN_NAME, DATA_TYPE, DATA_LENGTH FROM USER_TAB_COLUMNS WHERE TABLE_NAME = ?";
PreparedStatement pstmt2 = con.prepareStatement(query2);
String tableName = rs.getString("TABLE_NAME");
pstmt2.setString(1, tableName);
ResultSet rs2 = pstmt.executeQuery();
Table t = new Table();
t.setName(tableName);
System.out.println("1");
while (rs2.next()){
System.out.println("2");
String column_name = rs2.getString("COLUMN_NAAM");
String data_type = rs2.getString("DATA_TYPE");
int data_length = rs2.getInt("DATA_LENGTH");
Column column = new Column();
column.setColumnName(column_name);
column.setDataType(data_type);
column.setData_length(data_length);
t.addColumn(column);
}
db.addTable(t);
tableStructureList.add(t);
}
} catch (SQLException e) {
e.printStackTrace();
}
return db;
}
因此,一个简单的数据库对象应该包含这些内容。谁能帮帮我吗。提前感谢我不会让两个ResultSet对象在您观察自己时同时打开,我在这里看到了两种备选解决方案
tableStructureList
中,然后在完成第一个查询后,可以继续执行第二个查询,而是循环执行tableStructureList
以获得要使用的表TABLE\u NAME
,并在TABLE\u NAME
soSELECT TABLE\u NAME,…(与之前相同)。。。按表格名称排序_名称
代码snipper是针对JS/HTML等web元素的,而不是JavaAzro,我看到只有3个选项:HTML、CSS和JS。我在哪里可以选择java?你不需要,因为java需要一个jvm来运行,你不能在这里运行它,所以只需将它显示为代码,HTML/CSS/JS可以在web浏览器中运行,这就是为什么你可以在这里运行tooThanks Azro,不会再犯这个错误。
public Database getTargetDbStructure(String username, String password, String url, String dbName) {
Database db = new Database();
db.setName(dbName);
List<Table> tableStructureList = new ArrayList<Table>();
try (Connection con = super.getConnectionTargetDb(username, password, url)) {
String query = "SELECT DISTINCT(TABLE_NAME) FROM USER_TAB_COLUMNS";
PreparedStatement pstmt = con.prepareStatement(query);
ResultSet rs = pstmt.executeQuery();
while (rs.next()){
String query2 = "SELECT COLUMN_NAME, DATA_TYPE, DATA_LENGTH FROM USER_TAB_COLUMNS WHERE TABLE_NAME = ?";
PreparedStatement pstmt2 = con.prepareStatement(query2);
String tableName = rs.getString("TABLE_NAME");
pstmt2.setString(1, tableName);
ResultSet rs2 = pstmt.executeQuery();
Table t = new Table();
t.setName(tableName);
System.out.println("1");
while (rs2.next()){
System.out.println("2");
String column_name = rs2.getString("COLUMN_NAAM");
String data_type = rs2.getString("DATA_TYPE");
int data_length = rs2.getInt("DATA_LENGTH");
Column column = new Column();
column.setColumnName(column_name);
column.setDataType(data_type);
column.setData_length(data_length);
t.addColumn(column);
}
db.addTable(t);
tableStructureList.add(t);
}
} catch (SQLException e) {
e.printStackTrace();
}
return db;
}
DATABASE
DONATIE
PROJECTID
KLANTID
DONATIEDATUM
BEDRAGDONATIEID
KLANT
ROL
WACHTWOORD
GEBRUIKERSNAAM
ETC..
TABLE3
ETC...