Grails中的SQL连接
在我的应用程序中,有几个地方我想使用纯SQL。当我在Sql.newInstance中硬编码连接细节时,它可以正常工作。出于明显的原因,我不想硬编码连接细节 当我使用dataSource变量时,它显示为null。我在控制器中的代码是: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
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)
,现在工作正常。谢谢你的帮助,非常感谢。