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

How to use global property value in connection string using 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')

但是当我放置全局属性时,它会抛出错误 "The TCP/IP connection to the host '192.168.111.111', port 1433 has failed. Error: "null。验证连接属性。确保 SQL 服务器的实例在主机上是 运行 并在端口上接受 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')