如何使用 groovy 在连接字符串中使用全局属性值



我尝试使用全局属性值,以便我可以从一个地方更改它,它将应用于我的所有脚本。这是我的连接字符串,当我将IP直接放在字符串中时,它可以正常工作

def dbName = context.expand( '${DB_Name}' )
def dbUser = context.expand( '${DB_Username}' )
def dbPass = context.expand( '${DB_Password}' )
def con = Sql.newInstance("jdbc:sqlserver://192.168.111.111:1433;" + "databaseName=" + dbName, dbUser, dbPass, 'com.microsoft.sqlserver.jdbc.SQLServerDriver')

但是当我放置全局属性时,它会抛出错误"与主机'192.168.111.111'的 TCP/IP 连接,端口 1433 失败。错误:"空。验证连接属性。确保主机上正在运行 SQL Server 实例,并在端口上接受 TCP/IP 连接。确保与端口的 TCP 连接未被防火墙阻止。

def dbServer = context.expand( '${DB_Server}' )
def dbPort = context.expand( '${DB_Port}' )
def dbName = context.expand( '${DB_Name}' )
def dbUser = context.expand( '${DB_Username}' )
def dbPass = context.expand( '${DB_Password}' )
def con = Sql.newInstance("jdbc:sqlserver://'$dbServer':1433;" + "databaseName=" + dbName, dbUser, dbPass, 'com.microsoft.sqlserver.jdbc.SQLServerDriver')

不知道为什么你把$dbServer地址放在引号里,它应该是

def con = Sql.newInstance("jdbc:sqlserver://$dbServer:1433;" + "databaseName=" + dbName, dbUser, dbPass, 'com.microsoft.sqlserver.jdbc.SQLServerDriver')

或者(模板化所有的东西,而不仅仅是服务器)

def con = Sql.newInstance("jdbc:sqlserver://$dbServer:1433;databaseName=$dbName", dbUser, dbPass, 'com.microsoft.sqlserver.jdbc.SQLServerDriver')

最新更新