如何检查数据库中是否存在表或列?

swe*_*ams 15 java mysql database

我正在尝试制作简单的java代码,以检查MySQL DB中是否存在表和/或列.我应该使用Java代码进行检查还是创建一个SQL查询字符串并执行它来进行检查?

编辑-

@ aleroot -

我尝试使用您的代码,如下所示.当我运行下面的代码时,我没有看到任何表或列.我只看到这个 -

Driver Loaded.
Got Connection.
Run Code Online (Sandbox Code Playgroud)

我的DB有很多DB,表和列.我不知道为什么这个程序正常工作.

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

    public class Tester {
  static Connection conn;
  static Statement st;
  public static void main(String[] args) throws Exception {
    try {
  // Step 1: Load the JDBC driver.
  System.out.println("Driver Loaded.");
  // Step 2: Establish the connection to the database.
  String url = "jdbc:mysql://localhost:3306/";

  conn = DriverManager.getConnection(url, "cowboy", "123456");
  System.out.println("Got Connection.");

  st = conn.createStatement();
} catch (Exception e) {
  System.err.println("Got an exception! ");
  e.printStackTrace();
  System.exit(0);
}

DatabaseMetaData md2 = conn.getMetaData();
ResultSet rsTables = md2.getColumns(null, null, "customers", "name");
 if (rsTables.next()) {
      System.out.println("Exists !");
    }
  }

}
Run Code Online (Sandbox Code Playgroud)

ale*_*oot 33

要检查表是否存在,可以使用以下方式使用DatabaseMetaData:

DatabaseMetaData md = connection.getMetaData();
ResultSet rs = md.getTables(null, null, "table_name", null);
if (rs.next()) {
  //Table Exist
}
Run Code Online (Sandbox Code Playgroud)

要检查列是否存在,您可以以类似的方式使用它:

DatabaseMetaData md = connection.getMetaData();
ResultSet rs = md.getColumns(null, null, "table_name", "column_name");
 if (rs.next()) {
      //Column in table exist
    }
Run Code Online (Sandbox Code Playgroud)

  • @aleroot - 该代码对我不起作用:( (4认同)