0

我正在尝试在我的应用程序中做某事,但我被卡住了,无法找到前进的方向。这是我的问题:-

我想以编程方式创建 Oracle 查询。2 这样的查询例如是 DROP TABLE tableName & ALTER TABLE tableName PRIMARY KEY (col1, col2, col3....);

在我的课堂上,我创建了这 2 个最终的静态字符串:-

private static final String DROP_TABLE = "DROP TABLE %1$s";

createDropStmt() {
    System.out.format(DROP_TABLE, tableName);
}

如您所见,这种方法适用于 DROP 语句,但不适用于 PK,因为我不知道在运行时之前会有多少列存在。(private static final String PRIMARY_KEY = "ALTER TABLE %1$s PRIMARY KEY {不知道放什么}"`)

所以,我的问题是如何为 PK 做这种事情,以便我的模板字符串可以动态获取值并构造查询。?Java 是否有一个干净的方法来做到这一点,或者我的方法应该不同?

谢谢

4

2 回答 2

0

如果您有多个主键列,则必须用逗号连接它们的名称。java.util.Formatter不提供连接数组或值列表的方法。你必须为自己做这件事。

当您不想编写自己的连接器时,可以使用Guava中的连接器,如下所示:

Joiner.on(",").join(primaryKeyColumns);

然后将其插入到 ALTER TABLE 语句中。

于 2012-07-13T08:46:36.423 回答
-2

看看 PreparedStatement。

还有一些框架可以简化 Java 中的 sql 使用(http://www.jooq.org/ 作为一个随机示例)。

我真的不会使用字符串连接进行查询构造。它在 OWASP 前 10 名(sql 注入)中。

于 2012-07-13T08:39:10.383 回答