gpt4 book ai didi

java - 从 Java 在 SQL Server (2017) 中创建和处理多个数据库

转载 作者:行者123 更新时间:2023-12-02 02:19:46 25 4
gpt4 key购买 nike

我正在开发一个桌面应用程序来组织不同的事件,从而为每个事件创建一个数据库。到目前为止,我已经成功使用简单的 GUI 创建了一个具有用户想要的任何名称的数据库。

但是,我无法为所述数据库创建表或列,即使它与我在 SQL Server 管理器中使用的语法完全相同。

到目前为止我的代码:

public static void creDB(String db_name, String table_name){

Connection conn = null;
Statement stmt = null;
ResultSet rs = null;

try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn = DriverManager.getConnection(connectionUrl);

String SQL = "CREATE DATABASE " + db_name;
stmt = conn.createStatement();
int result = stmt.executeUpdate(SQL);

String SQL3 = "USE " + db_name;
boolean ree = stmt.execute(SQL3);
String SQL4 = "GO";
boolean rr = stmt.execute(SQL4);

if (result == 0){
System.out.println("Se insertó :D!");
String SQL2 = "CREATE TABLE Pepe(Name_emp INT NOT NULL PRIMARY KEY)";
int res = stmt.executeUpdate(SQL2);
if (res == 0)
System.out.println("GRACIAS DIOS");
}else
System.out.println("Raios shico");


}catch (Exception e) {e.printStackTrace();}
finally {
if (rs != null) try {rs.close();} catch (Exception e) {e.printStackTrace();}
if (stmt != null) try {stmt.close();} catch (Exception e) {e.printStackTrace();}
if (conn != null) try {conn.close();} catch (Exception e) {e.printStackTrace();}
}
}

当我尝试实际使用数据库时,我得到的错误是使用use [DB name] go;我已经尝试在一个单个 SQL 语句中使用相同的语法,但是它不起作用,所以我尝试单独执行它并收到此错误:

com.microsoft.sqlserver.jdbc.SQLServerException: Could not find stored procedure 'GO'.

我知道上面的代码看起来很困惑,确实如此,但这只是出于测试目的,因为我是使用 Java 进行与数据库相关的项目的新手;我混合匹配了 this site 的一些概念,在创建表之前都是成功的。

知道有一种更好的方法来管理多个数据库,但正如我所说,我才刚刚开始,所以任何建议将不胜感激。

最佳答案

您不应使用类似 USE <dbname> 的语句使用 JDBC 时,可能会导致意外行为,因为部分驱动程序可能仍使用原始连接数据库的元数据。您应该使用 setCatalog在当前连接上切换数据库或创建到新数据库的全新连接。

简而言之,创建数据库后,您应该使用:

conn.setCatalog(db_name);

就是这样。

此外,go不是 SQL Server 语法的一部分,它仅由 Management Studio 等工具使用,请参阅 What is the use of GO in SQL Server Management Studio & Transact SQL? JDBC 中的等价物是简单地执行语句。

关于java - 从 Java 在 SQL Server (2017) 中创建和处理多个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48675082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com