我正在尝试制作简单的Java代码,以检查MySQL DB中是否存在表和/或列。我应该使用Java代码进行检查还是生成一个SQL查询字符串并执行以进行检查?
编辑-
@ aleroot-
我尝试使用您的代码,如下所示。运行以下代码时,我看不到任何表或列。我只看到这个
Driver Loaded. Got Connection.
我的数据库有很多数据库,表和列。我不知道为什么该程序可以正常工作。
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 !"); } } }
要检查表是否存在,可以按以下方式使用DatabaseMetaData:
DatabaseMetaData md = connection.getMetaData(); ResultSet rs = md.getTables(null, null, "table_name", null); if (rs.next()) { //Table Exist }
并检查是否存在一列,您可以通过类似的方式使用它:
DatabaseMetaData md = connection.getMetaData(); ResultSet rs = md.getColumns(null, null, "table_name", "column_name"); if (rs.next()) { //Column in table exist }