我正在创建一个备份系统,它记录使用Java创建预先存在的数据库所需的SQL查询。我知道它有查询,但是我一辈子都不能让它在开始时列出所有的表创建查询,我有一个想法,得到数据库中表的数量,然后将创建表部分放在一个循环中,该循环运行数据库中表的运行次数,但是我遇到了一个障碍。使用JDBC实现这一点的最佳方法是什么?下面是我想循环的部分。
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.
}
我认为我在评论中提供的链接可以解决问题,但让我详细说明如何使用它,以防我错了,或者我没有正确回答您的问题:
ResultSet rs = databaseMetaData.getTables(null, null, "%", null);
while (rs.next()) {
String currentTable = rs.getString(3));
ResultSet columns = ...// the rest of your code goes here as is
}
引用你的问题,你的问题是:
我无法让它在一开始就列出所有的表创建查询
建议:您可能需要考虑更简单、更不容易出错的方法来备份sqlite数据库,比如使用sqlite3命令行工具提供的。备份
或。转储
命令。更多细节请看这篇文章。
SQLiteDB 是基础的 SQLite 的 Swift 封装。SQLiteDB 非常简单,不提供任何高级的函数,不完全是 Swift 编写的,所以跟 Swift 调用 sqlite C API 的方法会有点不同。 SQL 查询示例: let data = db.query("SELECT * FROM customers WHERE name='John'") let row = dat
问题内容: 我只想计算已经使用php在数据库中创建的表中的行数。我使用了mysqli()。我需要表中的行数作为输出。 问题答案: 实际上,这是一个常见问题,您可以在任何地方找到答案。 就像http://php.net/manual/en/mysqli-result.num- rows.php 您可以将这个问题分为两个 我想知道如何连接到mysql。 我想知道如何编写该sql指令。
问题内容: 蟒蛇 我有一个清单清单。喜欢 我想计算每个列表在主列表中出现了多少次。 我的输出应该像 问题答案: 只需使用来自:
问题内容: 例如 : 如何使用mysql计数此表的列? 问题答案:
我正在用cypress做E2E测试。我必须计算表中的行数,每种情况都不同。 在正常的javascript中,我写这个只是为了得到列的总行数 不幸的是,在柏树我得到以下错误: 我试着这样数数但一无所获 我不知道它从哪里返回了行数
问题内容: 我有一个布尔值列表: 并且我正在寻找一种方法来计算列表中的数量(因此,在上面的示例中,我希望返回值是。)我已经找到了一些示例,这些示例寻找特定元素的出现次数。因为我正在使用布尔运算,所以有效的方法吗?我在想类似或的东西。 问题答案: 等于。