[英]Check if a table exists using JDBC
我的數據庫中有一個名為test2的表。 現在我想檢查它是否存在於Java代碼中。 我已經寫了這些代碼行來檢查表是否存在。
DatabaseMetaData dbm = conn.getMetaData();
ResultSet rs = dbm.getTables(null, "APP", "test2", null);
if (!rs.next()) {
PreparedStatement create = conn.prepareStatement("create table test2(name2 varchar(33))");
create.executeUpdate();
}else{
System.out.println("already exists");
}
由於test2存在於APP模式中,因此我的else應該得到執行。 但就我而言,如果要執行。
Derby以大寫形式存儲表名(這是SQL標准要求的,也由許多其他DBMS完成)
您還需要以大寫形式傳遞表名
ResultSet rs = dbm.getTables(null, "APP", "TEST2", null);
該驅動程序(我所知道的所有驅動程序)按照以下方式運行:
where table_name like 'TEST2'
檢索表列表。 其中TEST2
是對getTables()
的調用的不變值。 如果您有一個DBMS進行區分大小寫的字符串比較(幾乎所有DBMS都這樣做-我認為MySQL和SQL Server就是例外),那么顯然表名必須以與存儲時相同的大小寫進行傳遞。
但是,您可以通過引用混合大小寫的表名稱來create table "FooBar" (...)
它們: create table "FooBar" (...)
在這種情況下,您需要將"FooBar"
傳遞給getTables()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.