Я использовал org.json встроенные методы для правильной печати данных.
JSONObject json = new JSONObject(jsonString); // Convert text to object
System.out.println(json.toString(4)); // Print it with specified indentation
Порядок полей в JSON является случайным для каждого определения. Конкретный порядок зависит от реализации парсера.
You can use DatabaseMetaData.getTables() to get information about existing tables.
This method works transparently and is independent of the database engine. I think it queries information schema tables behind the scenes.
Edit:
Here is an example that prints all existing table names.
DatabaseMetaData md = connection.getMetaData();
ResultSet rs = md.getTables(null, null, "%", null);
while (rs.next()) {
System.out.println(rs.getString(3));
}
Это - то, что работало на меня для jdbc:derby
:
//Create Staff table if it does not exist yet
String tableName = "STAFF";
boolean exists = conn.getMetaData().getTables(null, null, tableName, null).next();
if(!exists){
s = conn.createStatement();
s.execute("create table staff(lastname varchar(30), firstname varchar(30), position varchar(20),salary double,age int)");
System.out.println("Created table " + tableName);
}
Примечание, что tableName
должны быть все заглавные буквы.
Напишите запрос, который запрашивает таблицу / представление, которое будет перечислить таблицы (это зависит от поставщика БД). Вызовите это с Java.
Поиск в Google information_schema.tables очень поможет.
Используйте java.sql.DatabaseMetaData.getTables (null, null, YOUR_TABLE, null)
. Если таблица существует, вы получите ResultSet
с одной записью.
Для ВСЕХ баз данных, совместимых с ANSI: (mySQL, SQL Server 2005/2008, Oracle, PostgreSQL, SQLLite, возможно, другие)
select 1 from information_schema.tables where table_name = @tableName
There is a JDBC feature, database vendor independent - see [java.sql.DatabaseMetaData#getTables()][1]
You can get the DatabaseMetaData instance by calling java.sql.Connection#getMetaData()
[1]: http://java.sun.com/javase/6/docs/api/java/sql/DatabaseMetaData.html#getTables(java.lang.String, java.lang.String, java.lang.String, java.lang.String[])
В зависимости от БД вы можете использовать (MySQL)
SHOW TABLES
или (Oracle)
SELECT * FROM user_objects WHERE object_type = 'TABLE'
или что-то еще для SQL Server. Прокрутите результаты для MySQL или выполните дальнейшую фильтрацию для Oracle.
Why not just see if it is in sysobjects (for SQL Server)?
SELECT [name] FROM [sysobjects] WHERE type = 'U' AND [name] = 'TableName'
Это проблема не языка, а базы данных. Вы бы запросили метаданные в базе данных о существовании этого конкретного объекта.
Например, в SQL Server:
SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[table]')
AND type in (N'U')
Для доступа MS:
Select Count(*) From MSysObjects
Where type=1 And name='your_table_name_here'