我有一个字符串,可以容纳任何类型的sql语句(选择,更新,删除,插入)
我想在该语句中用大写的列和表名。
让我们说:
select id from person where name="Dave"
我想要
select ID from PERSON where NAME="Dave"
到目前为止,我已经在Java中找到了一些Sql解析器,但我想知道是否还有另一种更简单的方法来解析sql并重建它。
修改
为了进一步澄清这个问题,数据库整理是土耳其语,我试图解决的问题是土耳其问题"。 DB中的列/表的名称都是大写的,但Java应用程序生成带有小写列和表的sql语句
答案 0 :(得分:1)
您应该使用带有绑定变量的预准备语句。通过这样做,您可以大写查询,然后在任何情况下放置绑定变量。
例如:
String query = "select id from person where name=?"
Connection con = .... ;
PreparredStatement ps = con.prepareStatement(query.toUpperCase());
ps.setString(1, "Dave");
ResultSet rs = ps.executeQuery();
希望这有帮助。
答案 1 :(得分:0)
我不确定我是否正确理解了您的问题,但如果您想以大写形式检索特定的列名,那么您的查询将会是这样的,
SELECT id AS ID FROM person WHERE name = "Dave";
答案 2 :(得分:0)
您可以这样做:
public String queryText(final String message, final String... args) {
return String.format(message.toUpperCase().replace("?", "%s") + "%n", args);
}
并以这种方式称呼它:
System.out.println(queryText("select id from person where name=?", "Dave"));
输出:SELECT ID FROM FROM NERSON NAME = Dave
希望有所帮助