最近在做畢業設計,是一個用powerbuilder開發的小系統,這個東東跟兩年前學的vb差不多,但是呢又不太一樣,熟悉熟悉環境就開始做了,現在系統已經完成,總結一下這幾天遇到的小問題,有時候解決不了確實挺煩人的,但願給一些用得到的朋友提供一點思路吧。
每次運行系統都要選擇資料來源,登入SQL Server
串連資料庫不成功,未正確配置串連
說到這裡,先介紹四種串連方式.
一、使用 SNC SQLNative Client方式串連資料庫
sqlca = createtransaction
SQLCA.DBMS= "SNC SQL Native Client(OLE DB)" //介面說明
SQLCA.LogId = "sa" //資料庫管理員ID
SQLCA.LogPass= "" //資料庫管理員密碼
SQLCA.ServerName = "." //資料庫伺服器名稱或者IP地址
SQLCA.DBParm= "Database='techmager'" //要串連的資料庫名稱
sqlca.autocommit=true //設定是否自動認可
connectusing sqlca ; //執行資料庫連接
使用SNC SQL Native Client方式串連資料庫時,用戶端電腦需要安裝 SNC SQL Native Client用戶端程式驅動介面
二、使用OLE DB方式串連資料庫
SQLCA.DBMS= "OLE DB" //介面說明
SQLCA.LogId = "sa" //資料庫管理員ID
SQLCA.LogPass= "" //資料庫管理員密碼
SQLCA.AutoCommit= False //設定是否自動認可
SQLCA.DBParm ="PROVIDER='SQLOLEDB',DATASOURCE='.',PROVIDERSTRING='database=techmager'" //定義串連的參數DATASOURCE參數說明資料庫伺服器地址,可以是電腦名稱或者IP , PROVIDERSTRING='database=techmager'說明要串連的資料是 techmager
connectusing sqlca; //執行資料庫連接
三、使用 ADO.NET串連資料庫
SQLCA.DBMS= "ADO.Net" //介面說明
SQLCA.LogId = "sa" //資料庫管理員ID
SQLCA.LogPass= '' //資料庫管理員密碼
SQLCA.AutoCommit= False //設定是否自動認可
SQLCA.DBParm ="Namespace='System.Data.SqlClient',DataSource='.',Database='techmager'" //定義串連的參數DATASOURCE參數說明資料庫伺服器地 址,可以是電腦名稱或者IP,database='techmager'說明要串連的資料是 techmager
connectusing sqlca ; //執行資料庫連接
使用ADO.NET串連資料庫方式串連資料庫時,用戶端電腦需要安裝dotNetFramework運行環境才能成功串連到資料庫
四、使用 ODBC串連資料庫
SQLCA.DBMS = "ODBC" //介面說明
SQLCA.SERVERNAME="." //伺服器名稱或者IP地址
SQLCA.AutoCommit = False //是否自動認可
SQLCA.DBParm ="ConnectString='DSN=technology;UID=sa;PWD=zab'" //伺服器資料來源配置
connect using sqlca; //執行資料庫連接
使用ODBC介面方式串連資料庫,用戶端電腦必須配置ODBC資料來源
我用的ODBC串連,先配置好ODBC資料來源,然後寫連接字串就可以了,但當時由於自己寫錯了連接字串,所以為避免出錯,我建議大家還是直接複製配置好的串連語句吧。可以在這裡找。
首先,找到Database
然後,找到自己建立的資料來源,右鍵Properties,在Preview視窗下。
進入登入介面,輸入使用者名稱密碼後,又彈出錯誤提示:
this applicationneeds a script for its open event
解決:
應用程式啟動並執行時候需要一個入口程式,就是運行時執行的第一個事件。
在application的open中寫入代碼: open (w_login)
習慣了VS中右鍵——設為啟動項目,竟忘記了要給它一個啟動入口程式,唉。。
系統運行中,又出錯了,原以為是我程式中寫的欄位和資料庫欄位不一致導致找不到或者什麼無效之類的,一個個核對完之後發現:不是我的錯!
這個問題也好解決,把資料庫連接改一下
SQLCA.DBParm = "ConnectString='DSN=drivers;UID=sa;PWD=123456',DisableBind=1,StaticBind=0,CallEscape='No',DelimitIdentifier='Yes',StripParmNames='Yes'"
因為系統用到了預存程序,ODBC不允許帶參數,所以必須使得datawindow獲得參數的實際值後再直接調用執行過程。高手如是說。