0

在我寻找一种处理多租户播放框架和 postgresql 模式的方法时,我在 这里找到了这篇文章。
问题是我无法弄清楚我可以在游戏中执行普通 sql 语句的方式(我完全是菜鸟),有人可以帮忙吗?

4

2 回答 2

1

在游戏中,您拥有可以帮助您获取原始 jdbc 对象的 DB 对象。如果您的查询是没有参数的简单更新,您可以执行

DB.execute(simpleUpdate)

如果您的查询是没有参数的简单选择,您可以执行

DB.executeQuery(simpleSelect)

如果您有更复杂的参数,则可以通过直接获取连接来使用 PreparedStatement

PreparedStatement deleteStmt = DB.getConnection().prepareStatement(myStatement);
try {
    deleteStmt.setString(1, myString);
    deleteStmt.executeUpdate();
} finally {
    deleteStmt.close();
}
于 2012-10-03T06:52:08.977 回答
0

我们使用模式对 Postgres 数据库进行分片。这是我们想出的解决方案。我们在 application.conf 中添加多个 DB 连接,并使用自定义 SQL 初始化连接。

# application.conf
db.default.driver=org.postgresql.Driver
db.default.url="jdbc:postgresql://localhost/mytest"
db.default.user=your_user
db.default.password=passwd
db.default.initSQL="SET timezone = 'UTC';"

db.tp0.driver=org.postgresql.Driver
db.tp0.url="jdbc:postgresql://localhost/mytest"
db.tp0.user=your_user
db.tp0.password=passwd
db.tp0.initSQL="SET search_path TO tp0, public;SET timezone = 'UTC';"

Java 代码

EbeanServer tp0 = Ebean.getServer("tp0");
List<moneylog> res = tp0.find(moneylog.class).findList();
于 2014-12-04T15:01:59.000 回答