gpt4 book ai didi

java - JDBC 代码与单一数据库类型相关吗?

转载 作者:行者123 更新时间:2023-11-29 04:43:17 25 4
gpt4 key购买 nike

考虑这个场景:在开发期间,我想使用 MySQL,在生产中我将使用 derby

为了获得连接,我从 java tutorial 获得了这个方法:

public Connection getConnection() throws SQLException {

Connection conn = null;
Properties connectionProps = new Properties();
connectionProps.put("user", this.userName);
connectionProps.put("password", this.password);

if (this.dbms.equals("mysql")) {
conn = DriverManager.getConnection(
"jdbc:" + this.dbms + "://" +
this.serverName +
":" + this.portNumber + "/",
connectionProps);
} else if (this.dbms.equals("derby")) {
conn = DriverManager.getConnection(
"jdbc:" + this.dbms + ":" +
this.dbName +
";create=true",
connectionProps);
}
System.out.println("Connected to database");
return conn;
}

下面是一些涉及查询数据库的代码(again from java tutorial):

public static void viewTable(Connection con, String dbName)
throws SQLException {

Statement stmt = null;
String query = "select COF_NAME, SUP_ID, PRICE, " +
"SALES, TOTAL " +
"from " + dbName + ".COFFEES";
try {
stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
String coffeeName = rs.getString("COF_NAME");
int supplierID = rs.getInt("SUP_ID");
float price = rs.getFloat("PRICE");
int sales = rs.getInt("SALES");
int total = rs.getInt("TOTAL");
System.out.println(coffeeName + "\t" + supplierID +
"\t" + price + "\t" + sales +
"\t" + total);
}
} catch (SQLException e ) {
JDBCTutorialUtilities.printSQLException(e);
} finally {
if (stmt != null) { stmt.close(); }
}
}

我想知道是否需要根据我在后端使用的数据库更改我的查询结构。例如,MySQLPostgreSql 似乎有一些 key differences在查询中。 (在上面的示例中,它可能没有任何区别)。

我有 django 框架背景,其中 ORM 旨在处理任何类型的数据库。相同的代码适用于插入的任何数据库。

最佳答案

由于您在使用 JDBC 时直接编写 SQL 语句,因此这些语句本质上与您使用的数据库相关联。解决这个问题的唯一方法是只使用所有目标数据库都支持的 SQL 结构。没有什么可以使您免受数据库之间差异的影响。

关于java - JDBC 代码与单一数据库类型相关吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24045527/

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