Я создаю систему резервного копирования, которая записывает SQL запросов, необходимых для создания ранее существующей базы данных, используя Java. У меня это до такой степени, что у него есть запросы, однако я не могу на всю жизнь заставить его перечислить все запросы на создание таблиц в начале, и у меня была идея получить количество таблиц в базе данных, а затем поместить создать часть таблицы в al oop, которая запускает количество раз, когда есть таблицы в базе данных, однако я нахожусь в затруднительном положении. Как лучше всего добиться этого, используя JDB C? Ниже приведен раздел, который я хочу l oop.
while (/*loop contents here */)
{
ResultSet columns = databaseMetaData.getColumns(null, null, currentTable, null);
System.out.print("CREATE TABLE " + currentTable + " (");
while(columns.next())
{
String columnName = columns.getString("COLUMN_NAME");
String columnType = columns.getString("TYPE_NAME");
/*String selectCol = "SELECT * FROM " + currentTable;
ResultSet allColumns = statement.executeQuery(selectCol);*/
System.out.print(columnName + " " + columnType + ", ");
}
ResultSet PrimKey = databaseMetaData.getPrimaryKeys(null, null, currentTable);
System.out.print("PRIMARY KEY (");
while(PrimKey.next())
{
if(!PrimKey.isFirst())
{
System.out.print(", ");
}
System.out.print(PrimKey.getString("COLUMN_NAME"));
}
System.out.print(")");
ResultSet ForKey = databaseMetaData.getImportedKeys(null, null, currentTable);
while(ForKey.next())
{
if(!ForKey.isFirst())
{
System.out.print("FOREIGN KEY (" + ForKey.getString("PKCOLUMN_NAME") + ")");
System.out.print(" REFERENCES " + ForKey.getString("FKTABLE_NAME") + "(" + ForKey.getString("FKCOLUMN_NAME") + ")");
}
}
System.out.print("); \n");//Ends the sql query.
}