Grails中的SQL连接

Grails中的SQL连接,sql,grails,connection-string,Sql,Grails,Connection String,在我的应用程序中,有几个地方我想使用纯SQL。当我在Sql.newInstance中硬编码连接细节时,它可以正常工作。出于明显的原因,我不想硬编码连接细节 当我使用dataSource变量时,它显示为null。我在控制器中的代码是: import groovy.sql.Sql def dataSource def sql = Sql.newInstance(dataSource) sql.executeInsert("insert into....") 数据源配置文件中的代码是: envir

在我的应用程序中,有几个地方我想使用纯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数据库进行了尝试,得到了相同的结果


任何想法都将不胜感激。

您需要在控制器操作之外定义
数据源。否则spring无法为您执行所需的依赖项注入:

class YouController {

    def dataSource

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

嗨,克鲁多夫,谢谢你的回答。它现在通过这个def数据源行,但是当我设置def sql=new sql(数据源)时,我得到一个ClassNotFoundException异常。我还尝试了defsql=newgroovy.sql.sql(数据源),但结果相同。有什么想法吗?注意,请在控制器顶部导入groovy.sql.sql
。从理论上讲,这应该是可行的。您使用的是Grails1.3.7还是2.0.1?如果没有帮助,请告诉我完整的异常原因。我使用的是Grails2.0.1。目前我正在导入groovy.sql.sql。我知道它为什么不起作用,但不知道如何修复它,或者它是否是问题所在。在我的视图中,我使用标记来呈现一些复选框。在选中/取消选中这些复选框时,我使用AJAX调用将一些参数传递给javascript函数,javascript函数反过来调用控制器,在这里我有一个自定义操作,在这里我尝试运行SQL查询。可能是因为我在使用AJAX调用时丢失了grails对象吗?您能告诉我们具体的ClassNotFoundException吗?不管是不是AJAX调用,这都无关紧要。我不知道问题出在哪里,但我将代码从
defsql=newgroovy.sql.sql(dataSource)
更改为
groovy.sql.sql=newgroovy.sql.sql(dataSource)
,现在工作正常。谢谢你的帮助,非常感谢。