显示 java 中的数据库表
Display tables of a database in java
我正在开发一个 java 应用程序,我想显示 Mysql 数据库中的表列表,我在网上搜索后发现 "SHOW TABLES FROM [DB]" 是适当的请求,但我如何在 java swing/awt 应用程序上显示最后的结果,
PS : 我试着把请求的结果放在一个resultset上,
res = sta.executeQuery("SHOW TABLES FROM sinpec ");
但是没用...
我该如何继续?
根据 this 博客,您可以使用以下语句:
SELECT table_name FROM information_schema.tables WHERE table_type = 'base table' AND table_schema='test';
这似乎与SHOW TABLES
的效果相似。
这应该适用于您正在使用的结果结果。
请尝试这个查询:-
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = "DATABASE_NAME"
This example 或许能帮到你。基本上你可以使用 DatabaseMetaData
class 来完成你的任务。
public static String SCHEMA_NAME="${YOUR_SCHEMA_NAME}";
public static void main(String[] args) {
//create and setup your database and get db connection
DataBase db = new DataBase();
db.init();
try {
Connection con = db.getConnection();
DatabaseMetaData metaData = con.getMetaData();
String tableType[] = {"TABLE"};
StringBuilder builder = new StringBuilder();
ResultSet result = metaData.getTables(null,SCHEMA_NAME,null,tableType);
while(result.next())
{
String tableName = result.getString(3);
builder.append(tableName + "( ");
ResultSet columns = metaData.getColumns(null,null,tableName,null);
while(columns.next())
{
String columnName = columns.getString(4);
builder.append(columnName);
builder.append(",");
}
builder.deleteCharAt(builder.lastIndexOf(","));
builder.append(" )");
builder.append("\n");
builder.append("----------------");
builder.append("\n");
}
System.out.println(builder.toString());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
您可以试试这个显示所有表格的解决方案
try {
DbMd = myconn.getMetaData();
Rslt = DbMd.getTables(null, null, "%", null);
while (Rslt.next()) {
System.out.println(Rslt.getString(3));
}
}
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我正在开发一个 java 应用程序,我想显示 Mysql 数据库中的表列表,我在网上搜索后发现 "SHOW TABLES FROM [DB]" 是适当的请求,但我如何在 java swing/awt 应用程序上显示最后的结果, PS : 我试着把请求的结果放在一个resultset上,
res = sta.executeQuery("SHOW TABLES FROM sinpec ");
但是没用...
我该如何继续?
根据 this 博客,您可以使用以下语句:
SELECT table_name FROM information_schema.tables WHERE table_type = 'base table' AND table_schema='test';
这似乎与SHOW TABLES
的效果相似。
这应该适用于您正在使用的结果结果。
请尝试这个查询:-
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = "DATABASE_NAME"
This example 或许能帮到你。基本上你可以使用 DatabaseMetaData
class 来完成你的任务。
public static String SCHEMA_NAME="${YOUR_SCHEMA_NAME}";
public static void main(String[] args) {
//create and setup your database and get db connection
DataBase db = new DataBase();
db.init();
try {
Connection con = db.getConnection();
DatabaseMetaData metaData = con.getMetaData();
String tableType[] = {"TABLE"};
StringBuilder builder = new StringBuilder();
ResultSet result = metaData.getTables(null,SCHEMA_NAME,null,tableType);
while(result.next())
{
String tableName = result.getString(3);
builder.append(tableName + "( ");
ResultSet columns = metaData.getColumns(null,null,tableName,null);
while(columns.next())
{
String columnName = columns.getString(4);
builder.append(columnName);
builder.append(",");
}
builder.deleteCharAt(builder.lastIndexOf(","));
builder.append(" )");
builder.append("\n");
builder.append("----------------");
builder.append("\n");
}
System.out.println(builder.toString());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
您可以试试这个显示所有表格的解决方案
try {
DbMd = myconn.getMetaData();
Rslt = DbMd.getTables(null, null, "%", null);
while (Rslt.next()) {
System.out.println(Rslt.getString(3));
}
}
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}