gpt4 book ai didi

java - 我们可以在准备好的语句(PostgreSQL)中使用 DDL 命令吗?

转载 作者:搜寻专家 更新时间:2023-10-31 19:46:49 25 4
gpt4 key购买 nike

DDL 命令如下:

CREATE TABLE — 使用用户提供的列名创建一个表。

DROP TABLE — 删除所有行并从数据库中删除表定义。

ALTER TABLE — 在表中添加或删除列。

如果有可能在 PostgreSQL 和 Java 中使用这些命令,我​​需要几个例子吗?

public boolean create(Employee employee) {

try {

callableStatement = openConnection().prepareCall("{call insert_employee(?,?,?)}");
callableStatement.setInt(1, employee.getEid());
callableStatement.setString(2, employee.getEname());
callableStatement.setInt(3, employee.getSid());

i = callableStatement.execute();

callableStatement.close();

closeConnection();



} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return i;

}

有没有可能在这种类型中使用 DDL CREATE 命令?使用准备好的语句?

最佳答案

它不受服务器支持,所以即使它似乎可以在客户端 JDBC 驱动程序中工作,我也不推荐它:

regress=> PREPARE CREATE TABLE test ( id serial primary key );
ERROR: syntax error at or near "CREATE"
LINE 1: PREPARE CREATE TABLE test ( id serial primary key );
^

这样做没有任何好处,因为你不能参数化它们,所以你不能写:

CREATE TABLE ? ( ? text, ...)

然后将占位符值指定为语句的查询参数。

在 PostgreSQL 中,只有 计划的 语句可以在服务器端准备和参数化。目前,这意味着 INSERTUPDATEDELETESELECT

您需要根据 PostgreSQL 的 lexical structure rules 进行自己的字符串插值和安全引用- 这几乎是 SQL 规范的内容。将所有标识符包裹在 "double quotes" 中,并将任何文字双引号括起来,例如 "these are literal ""double quotes""" for the table name these are文字“双引号”

您想要这样做的事实表明您的架构中可能存在设计问题,并且可能需要重新考虑您的处理方式。也许在 dba.stackexchange.com 上发布一个更详细的问题,解释你想用这个实现什么以及为什么?

关于java - 我们可以在准备好的语句(PostgreSQL)中使用 DDL 命令吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17648861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com