JDBC / MySQL:如何在创建数据库或关系时检查数据库或关系是不是存在,如果存在则打印错误
Posted
技术标签:
【中文标题】JDBC / MySQL:如何在创建数据库或关系时检查数据库或关系是不是存在,如果存在则打印错误【英文标题】:JDBC / MySQL: How to check if a database or relation exists when creating one, then print off an error if it doesJDBC / MySQL:如何在创建数据库或关系时检查数据库或关系是否存在,如果存在则打印错误 【发布时间】:2016-11-11 15:38:24 【问题描述】:我对 JDBC 非常陌生,并且正在尝试为一个班级开展一个项目。我们应该为所述数据库创建一个数据库和关系。如果数据库或关系已经存在,我们应该打印一条消息通知用户。我不确定该怎么做。到目前为止,这是我的方法:
public static void createDatabase() throws Exception
String createString =
"CREATE DATABASE IF NOT EXISTS companydb";
Statement stmt = null;
try
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/?autoReconnect=true&useSSL=false";
String username = "username";
String password = "password";
Class.forName(driver);
Connection con = DriverManager.getConnection(url, username, password);
stmt = con.createStatement();
stmt.executeUpdate(createString);
System.out.println("Database created.");
catch (Exception e)
System.out.println(e);
finally
if (stmt != null) stmt.close();
对于创建员工表(尚未创建所有值,只是测试运行):
public static void createEmployeeTable() throws Exception
String createString =
"create table if not exists employee" + "(Fname char(32) NOT NULL, " +
PRIMARY KEY(Fname)";
Statement stmt = null;
try
Connection con = getConnection();
stmt = con.createStatement();
stmt.executeUpdate(createString);
System.out.println("Employee table created.");
catch (Exception e)
System.out.println(e);
finally
if (stmt != null) stmt.close();
我还意识到,创建这样的表格可能不是建立关系的最有效方式,但它现在只是一项正在进行的工作。感谢任何人都可以提供的任何帮助!
无论数据库和关系/表是否已经存在,它都会输出相同的输出:
Database created.
Connected to database.
Employee table created.
Connected to database.
Department table created.
Connected to database.
Project table created.
Connected to database.
Works_On table created.
【问题讨论】:
那么,当您运行该代码时会发生什么?当 db/table 不存在时,executeUpdate() 返回什么?不存在时返回什么? 当我运行代码时,无论数据库或关系是否存在,它都会显示:数据库已创建。连接到数据库。已创建员工表。连接到数据库。部门表已创建。连接到数据库。项目表已创建。连接到数据库。 Works_On 表已创建。 去掉“如果不存在”并处理异常,这是唯一可靠的方法;或者只是不关心以前的(不)存在并留下“如果不存在”。 How to check if a particular database in mysql already exists using java的可能重复 【参考方案1】:将您的代码分解为两个步骤。
-
对表执行选择查询。如果表不存在,肯定会报错。
如果选择没有引发错误,您可以继续创建表。
【讨论】:
不错的主意,我会试试的!以上是关于JDBC / MySQL:如何在创建数据库或关系时检查数据库或关系是不是存在,如果存在则打印错误的主要内容,如果未能解决你的问题,请参考以下文章
创建驱动程序定义时如何添加 mySQL JDBC 驱动程序?
如何使用 JDBC/Java 访问和显示 MySQL 关系数据库中的特定记录?