gpt4 book ai didi

postgresql - 如何为表单生成器配置动态数据库

转载 作者:行者123 更新时间:2023-11-28 23:29:28 26 4
gpt4 key购买 nike

如何为表单生成器处理动态数据库。我需要在 tomcat 的“context.xml”中配置数据库源名称的方式,“Orbeon 表单”存储在单个“orbeon”静态数据库中。

截至目前,我在 context.xml 中使用以下上下文,它访问静态数据库,然后创建/更新/删除表单。

<Resource name="jdbc/postgres" auth="Container" type="javax.sql.DataSource" 
initialSize="3" maxActive="10" maxIdle="20" maxWait="30000"
driverClassName="org.postgresql.Driver"
poolPreparedStatements="true"
validationQuery="select 1 "
testOnBorrow="true"
username="orbeon"
password="orbeon"
url="jdbc:postgresql://localhost:3306/orbeon?useUnicode=true&amp;characterEncoding=UTF8"/>

这里的“orbeon”是静态数据库。

我需要提供一个动态数据库,而不是静态数据库。在用户打开表单生成器“URL”之前,我给出了登录页面。如果身份验证成功,则基于 userid 的用户只能访问其数据库的表单。

最佳答案

您不能为单个连接动态更改数据库 - 无论如何您都不应该为来自池的连接这样做。

在 Postgres 中,在一个单个 数据库中拥有多个模式可能更好 - 每个用户一个模式。

然后从连接池中获取连接后,您可以使用以下方法更改 session 的默认模式:

set search_path = user_specific_schema;

不要忘记提交此更改,否则 session 中的第一个回滚将还原此更改。您可以通过在启用自动提交的情况下运行该语句,或在您的 Connection 对象上调用 commit() 来做到这一点。

您可以通过使用 interceptor 自动实现这一点。为您的连接池。

关于postgresql - 如何为表单生成器配置动态数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32481529/

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