簡體   English   中英

使用JDBC檢查表是否存在

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM