Java 格式化sql
时间: 2023-07-03 18:29:27 浏览: 40
你可以使用 Java 中的 PreparedStatement 来格式化 SQL 语句。下面是一个使用 PreparedStatement 的例子:
```java
String name = "John";
int age = 25;
String sql = "SELECT * FROM users WHERE name=? AND age=?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, name);
statement.setInt(2, age);
ResultSet result = statement.executeQuery();
```
在上面的代码中,我们使用了占位符 `?` 来代替 SQL 语句中的参数,然后使用 PreparedStatement 的 `setXXX` 方法来设置每个参数的值。这样可以避免 SQL 注入攻击,并且可以更方便地格式化 SQL 语句。
相关问题
java 格式化sql
您可以使用 Java 的 PreparedStatement 类来格式化 SQL 语句。该类允许您将查询参数化,并且能够自动处理转义和注入攻击等问题。
下面是一个示例代码,该代码使用 PreparedStatement 格式化 SQL 语句:
```java
try {
// 创建连接和查询语句对象
Connection conn = DriverManager.getConnection(databaseUrl, username, password);
PreparedStatement stmt = conn.prepareStatement("SELECT * FROM customers WHERE last_name = ?");
// 设置查询参数
stmt.setString(1, "Smith");
// 执行查询并处理结果
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
// 处理查询结果
}
// 关闭连接和查询语句对象
rs.close();
stmt.close();
conn.close();
} catch (SQLException ex) {
// 处理 SQL 异常
}
```
在上面的代码中,我们使用 `?` 占位符来代替查询中的参数。然后我们使用 `setString()` 方法为该占位符设置实际值。这种方式可以避免 SQL 注入攻击,并且可以自动转义特殊字符。
请注意,在使用 PreparedStatement 时,您不需要手动格式化 SQL 语句。PreparedStatement 类会自动处理语句中的特殊字符和转义序列。
java sql语句格式化_java格式化sql
Java中可以使用第三方库如JSqlParser和PrettySQL来格式化SQL语句。其中,JSqlParser可以将SQL语句解析成AST(抽象语法树)形式,然后再将AST转化为格式化后的SQL语句;而PrettySQL则可以直接对SQL语句进行格式化。
以下是使用JSqlParser进行SQL语句格式化的示例代码:
```java
import java.io.StringReader;
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
import net.sf.jsqlparser.statement.Statement;
import net.sf.jsqlparser.util.deparser.ExpressionDeParser;
import net.sf.jsqlparser.util.deparser.SelectDeParser;
import net.sf.jsqlparser.util.deparser.StatementDeParser;
public class SqlFormatter {
public static String format(String sql) throws Exception {
Statement stmt = CCJSqlParserUtil.parse(new StringReader(sql));
SelectDeParser selectDeparser = new SelectDeParser();
StatementDeParser stmtDeparser = new StatementDeParser(selectDeparser, new StringBuilder());
ExpressionDeParser expressionDeparser = new ExpressionDeParser(stmtDeparser, selectDeparser, new StringBuilder());
stmtDeparser.setExpressionVisitor(expressionDeparser);
stmt.accept(stmtDeparser);
return stmtDeparser.getBuffer().toString();
}
}
```
使用示例:
```java
String sql = "SELECT id, name FROM users WHERE age > 18";
String formattedSql = SqlFormatter.format(sql);
System.out.println(formattedSql);
```
输出结果:
```
SELECT
id,
name
FROM
users
WHERE
age > 18
```
注:JSqlParser还可以进行更复杂的SQL语句解析和转化,如增、删、改操作,JOIN查询等。