如何在Java中构造动态String?

时间:2012-07-13 08:34:02

标签: java

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

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

在我的班级中,我创建了这两个最终的静态字符串: -

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有一个干净的方法,或者我的方法应该有所不同吗?

由于

2 个答案:

答案 0 :(得分:0)

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

如果您不想编写自己的木匠,可以使用Joiner中的Guava libraries,如下所示:

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

然后将其插入ALTER TABLE语句。

答案 1 :(得分:-2)

查看PreparedStatement。

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

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