【问题标题】:SQL connection in GrailsGrails 中的 SQL 连接
【发布时间】:2012-03-25 21:45:12
【问题描述】:

在我的应用程序中有几个地方我想使用纯 SQL。当我在 Sql.newInstance 中对连接详细信息进行硬编码时,它可以正常工作。出于显而易见的原因,我宁愿不对连接细节进行硬编码。

当我使用 dataSource 变量时,它显示为 null。我在控制器中的代码是:

import groovy.sql.Sql

def dataSource
def sql = Sql.newInstance(dataSource)
sql.executeInsert("insert into....")

我在数据源配置文件中的代码是:

environments {
    development {
        dataSource {
            dbCreate = "create-drop" 
            url = "jdbc:postgresql:mydev"
            username = "xxx"
            password = "xxx"

如您所见,我使用的是 PostgreSQL。我也尝试过使用默认的 grails 数据库,结果相同。

任何想法都将不胜感激。

【问题讨论】:

    标签: sql grails connection-string


    【解决方案1】:

    您需要在控制器操作之外定义dataSource。否则 spring 无法为你做所需的依赖注入:

    class YouController {
    
        def dataSource
    
        def yourAction() {
            def sql = new Sql(dataSource)
            [..]
        }
    }
    

    【讨论】:

    • 您好 crudolf 感谢您的回答。它现在通过了这个 def dataSource 行,但是当我设置 def sql = new Sql(dataSource) 我得到一个 ClassNotFoundException 异常。我也尝试过 def sql = new groovy.sql.Sql(dataSource),但结果相同。有任何想法吗?问候,马吕斯
    • 尝试在控制器顶部执行import groovy.sql.Sql。理论上它应该工作。您使用的是 grails 1.3.7 还是 2.0.1?如果没有帮助,请告诉我完整的异常原因。
    • 我正在使用 grails 2.0.1。目前我正在导入 groovy.sql.Sql。我知道它为什么不起作用,但不知道如何解决它,或者它是否是问题所在。在我看来,我使用标签来呈现一些复选框。在选中/取消选中这些复选框时,我使用 AJAX 调用将一些参数传递给 javascript 函数,该函数又调用控制器,在其中我有一个自定义操作,我在其中尝试运行 SQL 查询。会不会是我在使用 AJAX 调用时丢失了我的 grails 对象?
    • 你能给我们具体的 ClassNotFoundException 吗?不管是不是AJAX调用,都无所谓。
    • 我不知道问题出在哪里,但是将我的代码从 def sql = new groovy.sql.Sql(dataSource) 更改为 groovy.sql.Sql = new groovy.sql.Sql(dataSource) 现在可以正常工作了。感谢您的帮助,非常感谢。
    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2017-11-30
    • 2013-07-21
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多