![](/img/trans.png)
[英]How can I create a SQL server linked server to MySQL without a DSN?
[英]How can I connect to a SQL Server in ColdFusion 7 without a DSN?
我正在運行Coldfusion MX 7的服務器上編寫CFC。CFC需要能夠查詢數據庫的位置,該數據庫的位置將在運行時確定。 數據庫為SQL Server2005。CFC將服務器的IP地址和數據庫名稱作為參數,並且內置的Windows身份驗證應允許來自計算機的連接。 但是,我不知道如何編碼連接。 自CF5以來,<cfquery>標記不支持connectstring屬性。 設置系統DSN不夠動態。 我知道可能有某種方法可以在不使用DSN的情況下連接到SQL Server,但是此方法此刻使我無所適從。 有誰知道如何做到這一點?
您可以使用datasourceService在CF7上修改數據源。 遵循以下思路可能會起作用:
<cfset service = createobject("java","coldfusion.server.ServiceFactory").getDatasourceService()>
<cfset uname = "yourUserName">
<cfset pw = service.encryptPassword("yourPassword")>
<cfdump var="#createobject("java","coldfusion.server.ServiceFactory").getDatasourceService()#">
<cfset ds = service.getDatasources()>
<cfset dsn = "MyDSN">
<cfset thisDS = service.getDatasource(dsn)>
<cfset thisDS.getDatasourceDef().setPassword(pw)><!--- if you need to set the password programmatically --->
<!--- do stuff to set the URL... you can get the appropriate functions from the cfdump of the datasourceservice, above --->
Verifying datasource: #service.verifyDatasource(dsn)# <br>
Google搜索提出了以下解決方案: http : //cfsilence.com/blog/client/index.cfm/2007/11/8/More-cfquery--Now-With-cfqueryparam
你試過了嗎?
沒有CF7,所以不能說該標簽中的所有Java東西都可以使用。 至少它不使用ServiceFactory(也就是CF8的解決方案)。
在查看了每個人的答案並進行了更多的Google搜索之后,我找到了一個簡單的解決方案。 正如亨利建議的那樣,該解決方案使用了一些Java代碼,但不需要編譯jar。 可以使用<cfscript>內聯完成。
<cfscript>
classLoader = createObject("java", "java.lang.Class");
classLoader.forName("sun.jdbc.odbc.JdbcOdbcDriver");
dm = createObject("java","java.sql.DriverManager");
con = dm.getConnection("jdbc:odbc:DRIVER={SQL Server};Database=""DATABASENAME"";Server=SERVERNAME;","USERNAME","PASSWORD");
st = con.createStatement();
rs = st.ExecuteQuery("SELECT * FROM TABLE");
q = createObject("java", "coldfusion.sql.QueryTable").init(rs);
</cfscript>
我認為這比以編程方式向ColdFusion Administrator中添加數據源要容易,盡管這似乎也是一個不錯的解決方案。 我猜自定義標簽Sergii鏈接的工作方式相似,盡管直到嘗試該解決方案后才看到鏈接,所以我沒有詳細檢查代碼。
不在CF7中,但是您可以通過管理員API在CF8中添加,修改和刪除ColdFusion數據源
使用Web服務訪問數據庫。
您可以繞過cfquery,而僅在Java中使用JDBC。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.