簡體   English   中英

沒有DSN的情況下如何連接到ColdFusion 7中的SQL Server?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM