我用9.0版本制作了一個管理系統,可是當我把相關exe檔案放到另一臺沒有安裝PB的機器上時,提示"資料庫連接錯誤",我找到了問題的所在,是因為沒有對資料庫連接進行初始化,只是用了以下默認的連接:
// Profile xueyuna
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "Connectstring='DSN=xueyuna;UID=123;PWD=456'"
connect using sqlca;
If SQLCA.SQLCode<0 Then
Messagebox("錯誤","資料庫連接錯誤")
Else
open(w_register)
End If
請問對于資料庫連接初始化的代碼應如何寫???我是新手,請詳細指點,謝謝!!
uj5u.com熱心網友回復:
是什么資料庫uj5u.com熱心網友回復:
是自帶的Sybase SQL Anywhere 8.0uj5u.com熱心網友回復:
以下內容為轉載如何安裝SQL Anywhere與PB應用程式?
隨心作業室原創 未經授權,不得轉載
一.安裝步驟
一般地說發布一個PB應用除應用程式部件本身外,還應該包含如下檔案及相關操作:
1. PowerBuilder運行時元件( Runtime Library )。
2. 資料庫介面:一方面包括PB提供的資料庫專用介面或ODBC介面程式,另一方面包括不同資料庫廠商提供的ODBC資料庫驅動程式。
3. ODBC資料源的配置。
二.PowerBuilder運行時元件( Runtime Library )。
不同版本的PB所需要的運行時元件檔案不盡相同,但庫名有相似的地方,這些DLL都必須包含在應用程式目錄或系統目錄當中:
PB6.5所需檔案:
必需 PBVM60.DLL PowerBuilder 虛擬機
可選 PBDWE60.DLL DataWindow 資料視窗引擎
可選 PBRTC60.DLL 超文本控制元件
可選 PBTRA60.DLL 資料庫訪問跟蹤
可選 PBODB60.DLL PB的ODBC介面
可選 PBIN760.DLL INFORMIX 介面
可選 PBMSS60.DLL Microsoft SQL Server介面
可選 PBSYC60.DLL Sybase SQL Server介面
可選 PBO7360.DLL/PBO7260.DLL Oracle Version介面
PB7.0所需檔案:
必需 PBVM70.DLL PowerBuilder 虛擬機
必需 LIBJCC.DLL PowerBuilder 庫管理
可選 PBDWE70.DLL DataWindow 資料視窗引擎
可選 PBRTC70.DLL 超文本控制元件
可選 PBTRA70.DLL 資料庫訪問跟蹤
可選 PBODB70.DLL PB的ODBC介面
可選 PBIN770.DLL INFORMIX 介面
可選 PBMSS70.DLL Microsoft SQL Server介面
可選 PBSYC70.DLL Sybase SQL Server介面
可選 PBO7370.DLL/PBO8470.DLL Oracle Version介面
PB8.0所需檔案:
必需 PBVM80.DLL PowerBuilder 虛擬機
必需 LIBJCC.DLL PowerBuilder 庫管理
可選 PBDWE80.DLL DataWindow 資料視窗引擎
可選 PBRTC80.DLL 超文本控制元件
可選 PBTRA80.DLL 資料庫訪問跟蹤
可選 PBODB80.DLL PB的ODBC介面
可選 PBIN780.DLL INFORMIX 介面
可選 PBMSS80.DLL Microsoft SQL Server介面
可選 PBSYC80.DLL Sybase SQL Server介面
可選 PBO7380.DLL/PBO8480.DLL/PBO9080.DLL Oracle Version介面
以上檔案可以在C:\Program Files\Sybase\Shared\PowerBuilder取得。
三. SQL Anywhere ODBC資料庫驅動程式。
SQL Anywhere 5.0:
DBTL50T.DLL 資料庫工具
DBL50T.DLL 資料庫介面
WODBC.HLP 幫助檔案
WOD50T.DLL ODBC 驅動
WL50ENT.DLL 英文字串
WTR50T.DLL ODBC翻譯
DBENG50.EXE 資料庫引擎
SQL Anywhere 6.0:
DBL60T.DLL,WODBC.HLP,WOD60T.DLL,WL60ENT.DLL,WTR60T.DLL,DBENG60.EXE
SQL Anywhere 7.0:
DBODBC7.DLL,DBLIB7.DLL,DBWTSP7.DLL,DBLGEN7.DLL,DBODTR7.DLL,DBENG7.EXE
四. ODBC資料源配置。
在包含以上檔案之后,還必需對使用ODBC資料庫方式的應用進行ODBC資料源的配置,以便在安裝完畢后應用程式可以直接訪問用戶資料源。
下面以使用SQL Anywhere 5.0資料庫創建的用戶資料庫為例來說明如何使用資料源管理器進行ODBC的手工配置及如何在安裝程式中自動修改系統注冊表,其他資料庫可以參考SQL Anywhere 5.0進行操作。
1.使用資料源管理器配置用戶資料源。
1.1. 安裝SQL Anywhere資料庫驅動程式,使資料源管理器中的 "ODBC驅動程式 "頁增加一行SQL Anywhere的驅動說明。
1.2. 在 "用戶DSN "一頁選擇 "添加 ",然后選擇SQL Anywhere資料源,出現資料源的配置資訊表后,將資料源名(Data Source Name),資料庫名(Database File),用戶ID號(User ID),用戶密碼(Password)等資訊添齊,選擇 "OK "確認,此時在 "用戶資料源 "的視窗中就會增加用戶的資料庫的ODBC驅動,選擇 "確認 "后退出資料源管理器。
進行以上兩步以后重新啟動系統,用戶就可以在運行應用程式后使用SQL Anywhere資料庫。
2. 修改系統注冊表配置用戶資料源。
(以下注:C:\YourApp為用戶應用程式目錄,C:\YourApp\Sqlany50為應用程式包含的SQL Anywhere資料庫驅動檔案目錄,YourDB.DB為用戶資料庫。)
在HKEY_LOCAL_MACHINE\software\ODBC\ODBC Drivers下,增加字串鍵值:
Sybase SQL Anywhere 5.0 = "Installed "
在HKEY_LOCAL_MACHINE\software\ODBC\Sybase SQL Anywhere 5.0下,增加字串鍵值:
Driver = "C:\YourApp\Sqlany50\WOD50T.DLL "
Setup = "C:\YourApp\Sqlany50\WOD50T.DLL "
在HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Source下,增加字串鍵值:
TestDB = "Sybase SQL Anywhere 5.0 "
在HKEY_CURRENT_USER\Software\ODBC\ODBC.INI下,增加主鍵:TestDB,并分別加入鍵值如下:
Autostop = "yes "
Databasefile = "C:\YourApp\YourDB.DB
Databasename = "TestDB "
Driver = "C:\YourApp\Sqlany50\WOD50T.DLL "
PWD = "sql "
Start = "C:\YourApp\Sqlany50\dbeng50.exe -d -c1024 -Q "
UID = "dba "
在用戶的安裝程式中將以上步驟加入,可以使用戶的應用程式在不必安裝SQL Anywhere資料庫驅動下,也能直接訪問用戶資料源,從而實作用戶應用程式的獨立發布。
uj5u.com熱心網友回復:
你可以自己百度一下,自己試一下,不懂的再上來問,這樣效果可能還好一點http://liu129jun.blog.163.com/blog/static/27333386200952901018795/
uj5u.com熱心網友回復:
先非常感謝你的提示,我采用了你給我的連接提供的相關代碼,保存老出錯,我后來從百度里找到一段代碼,能基本看懂是啥意思,保存也正常,只是不知是哪里的問題,在沒有安裝PB的電腦中運行后目前還是提示“資料庫連接錯誤。
我的相關方法如下:
1、在自己的專案中拷入dbodbc8.dll
2、在application的open事件中撰寫如下代碼:
string apppath
apppath = GetCurrentDirectory() + '\'
integer i
string key, valuename, value
key = 'HKEY_LOCAL_MACHINE\SOFTWARE\ODBC.INI\xueyuna'
valuename = 'Driver'
valuename = 'DatabaseFile'
valuename = 'DatabaseName'
valuename = 'EngineName'
valuename = 'AutoStop'
valuename = 'Intergrated'
valuename = 'Debug'
valuename = 'DisableMultiRowFetch'
valuename = 'Compress'
value = apppath + 'dbodbc8.dll'
value = apppath + 'xueyuna.db' //xueyuna.db為資料庫檔案名
value = 'xueyuna' //xueyuna為資料庫名
value = 'db_EngineName' //db_EngineName為資料引擎名,自行定義
value = 'YES'
value = 'NO'
value = 'NO'
value = 'NO'
value = 'NO'
for i = 1 to 9
if RegistrySet(key, valuename, RegString!, value) <> 1 then
messagebox('錯誤', '注冊ODBC時出錯,請重新運行本程式!')
return
end if
next
sqlca.DBMS = "ODBC"
sqlca.AutoCommit = false
SQLCA.DBParm = "Connectstring='DSN=xueyuna;UID=123;PWD=456'"
connect using sqlca;
If SQLCA.SQLCode<0 Then
Messagebox("錯誤","資料庫連接錯誤")
Else
open(w_register)
End If
我的相關百度連接是:
http://www.ooppoo.com/html/02/n-255102.html
請壇友們幫我看看是哪里的問題?
uj5u.com熱心網友回復:
還請壇友們指點一下,哪里需要修改。uj5u.com熱心網友回復:
PB本身的問題?軟體沖突?排除后應該可以的uj5u.com熱心網友回復:
請問代碼有問題嗎???
uj5u.com熱心網友回復:
請問你能幫我看看問題嗎??
uj5u.com熱心網友回復:
string apppath
apppath = GetCurrentDirectory() + '\'
integer i
string key, valuename[9], value[9]
key = 'HKEY_LOCAL_MACHINE\SOFTWARE\ODBC.INI\xueyuna'
valuename[1] = 'Driver'
valuename[2] = 'DatabaseFile'
valuename[3] = 'DatabaseName'
valuename[4] = 'EngineName'
valuename[5] = 'AutoStop'
valuename[6] = 'Intergrated'
valuename[7] = 'Debug'
valuename[8] = 'DisableMultiRowFetch'
valuename[9] = 'Compress'
value[1] = apppath + 'dbodbc8.dll'
value[2] = apppath + 'xueyuna.db' //xueyuna.db為資料庫檔案名
value[3] = 'xueyuna' //xueyuna為資料庫名
value[4] = 'db_EngineName' //db_EngineName為資料引擎名,自行定義
value[5] = 'YES'
value[6] = 'NO'
value[7] = 'NO'
value[8] = 'NO'
value[9] = 'NO'
for i = 1 to 9
if RegistrySet(key, valuename[i], RegString!, value[i]) <> 1 then
messagebox('錯誤', '注冊ODBC時出錯,請重新運行本程式!')
return
end if
next
sqlca.DBMS = "ODBC"
sqlca.AutoCommit = false
SQLCA.DBParm = "Connectstring='DSN=xueyuna;UID=123;PWD=456'"
connect using sqlca;
If SQLCA.SQLCode<0 Then
Messagebox("錯誤","資料庫連接錯誤")
Else
open(w_register)
End If
uj5u.com熱心網友回復:
你必須通過安裝制作工具寫注冊表,另外一定需要ODBCQUDONGuj5u.com熱心網友回復:
先手工建個odbc資料源(也可以寫程式自動注冊),把樓上各位有列到的dll檔案考到程式檔案夾里,ok了uj5u.com熱心網友回復:
//根據MDB檔案名和ODBC DSN名建一個ODBC資料據源// flag =1 修改原資料據源
//falg=0 新建資料源
STRING DRIVERFILE
STRING UID
SETNULL(UID)
////ulong ll_size=255
string cdirect,ls_sysdir
////GetSystemDirectory(ls_sysdir,ll_Size)
cdirect=getcurrentdirectory()
if right(cdirect,1)<>'\' then cdirect=cdirect+"\"
////if (odbcname='') or(filename='') then
//// messagebox("提示","建立或修改資料源時檔案名或資料源名不能為空!")
//// return -1
////end if
filename =cdirect +filename
if NOT fileexists(filename) then
messagebox("提示",'資料源注冊或修改失敗,請正確填寫檔案名!')
halt close
end if
//if not fileexists(ls_sysdir+"\odbcjt32.dll") then
// filecopy(cdirect+"AccessDriver\odbcjt32.dll",ls_sysdir+"\odbcjt32.dll",true)
//end if
driverfile=cdirect+"odbcjt32.dll"
if flag=0 then
//新建資料源
RegistrySet("HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI\"+ODBCNAME,"DBQ",REGSTRING!,FILENAME)
RegistrySet("HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI\"+ODBCNAME,"DRIVER",REGSTRING!,DRIVERFILE)
RegistrySet("HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI\"+ODBCNAME,"DRIVERID",REGULONG!,25)
RegistrySet("HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI\"+ODBCNAME,"FIL",REGSTRING!,"MS Access;")
RegistrySet("HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI\"+ODBCNAME,"SafeTransactions",REGULONG!,0)
RegistrySet("HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI\"+ODBCNAME,"UID",REGSTRING!,"admin")
RegistrySet("HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI\"+ODBCNAME,"PWD",REGSTRING!,"123456")
RegistrySet("HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI\"+ODBCNAME+"\ENGINES\JET","ImplicitCommitSync",REGSTRING!,"")
RegistrySet("HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI\"+ODBCNAME+"\ENGINES\JET","MaxBufferSize",REGULONG!,2048)
RegistrySet("HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI\"+ODBCNAME+"\ENGINES\JET","PageTimeout",REGULONG!,5)
RegistrySet("HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI\"+ODBCNAME+"\ENGINES\JET","UserCommitSync",REGSTRING!,'YES')
ELSE
RegistrySet("HKEY_CURRENT_USER OFTWARE\ODBC\ODBC.INI\"+ODBCNAME,"DBQ",REGSTRING!,FILENAME)
END IF
RegistrySet("HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources",odbcname,REGSTRING!,"Microsoft Access Driver (*.mdb)")
return 1
uj5u.com熱心網友回復:
以上是一個函式函式名uf_regodbc
引數:
string odbcname
string filename
integer flag
這是一個創建access的資料源的我用的還是很好用的
uj5u.com熱心網友回復:
pb制作安裝程式確實很麻煩,我是用IS做的,大概和樓上說的是類似的,主要是dll檔案的安裝。轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/78039.html
標籤:腳本語言
下一篇:大家好!第一次上論壇,請求幫助!急:用sql server2000個人版+pb7.0開發好程式放到公司局域網上,顯示資料庫不能連接,請各位大蝦幫幫忙!
