有关应用程序数据库注册的问题,请教大家!

老板卤两个蛋蛋 2003-11-24 11:13:07
不是数据库的连接,
而是随可执行文件一同拷贝到任何地方,或是没有装pb的机器上都可以运行,
既自动修改注册表
有同志说需要把odbc配置在系统注册,注册表函数又该怎么写呀?
...全文
87 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
谢谢各位了
TGWall 2003-11-24
  • 打赏
  • 举报
回复
你先自力更生先,网上有相关的例子,实在不行我发一段给你
  • 打赏
  • 举报
回复
谢谢仁兄
我回去好好看一下!
GoldProgramer 2003-11-24
  • 打赏
  • 举报
回复
1.打开PB
2.按F1
3.输入Registry
4.下面几个是相关的注册表函数的帮助。
liliang800207 2003-11-24
  • 打赏
  • 举报
回复
转:

自动创建ODBC是基于对Windows注册表的直接写操作来实现的
步骤:
一、创建函数:
gf_create_odbc(string as_odbc_name,string as_odbc_type,string as_path)
string ls_key,ls_key1
ls_key = 'HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\'+as_odbc_name
ls_key1 = 'HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources'
if as_odbc_type = 'DBF' then
Registryset(ls_key,'Driver',"C:\WINDOWS\SYSTEM\PBDBF12.DLL")
Registryset(ls_key,'Description',"自动生成ODBC'")
Registryset(ls_key,'Database',as_path)
Registryset(ls_key,'CreateType',"FoxPro25")
Registryset(ls_key,'Locking',"RECORD")
Registryset(ls_key,'LockCompatibility',"Fox")
Registryset(ls_key,'FileOpenCache',"1")
Registryset(ls_key,'CacheSize',"4")
Registryset(ls_key,'DataFileExtension',"DBF")
Registryset(ls_key,'IntlSort',"C:0")
Registryset(ls_key,'UseLongNames',"1")
Registryset(ls_key,'UseLongQualifiers',"1")
Registryset(ls_key,'ApplicationUsingThreads',"1")
Registryset(ls_key1,as_odbc_name,"PB INTERSOLV OEM 3.01 32-BIT dBASEFile (*.dbf)")
end if
if as_odbc_type = 'SQLANY' then
Registryset(ls_key,'Driver',as_path+"WOD50T.DLL")
Registryset(ls_key,'Description',"自动生成ODBC'")
Registryset(ls_key,'UID',"DBA")
Registryset(ls_key,'PWD',"SQL")
Registryset(ls_key,'Start',as_path+'dbeng50')
Registryset(ls_key,'DatabaseFile',as_path+as_odbc_name+'.DB')
Registryset(ls_key,'DatabaseName',as_odbc_name)
Registryset(ls_key,'AutoStop',"Yes")
Registryset(ls_key1,as_odbc_name,"Sybase SQL Anywhere 5.0")
end if
if as_odbc_type = 'FOXPRO' then
Registryset(ls_key,'DefaultDir',as_path)
Registryset(ls_key,'Description',as_odbc_name+"的自动ODBC'")
Registryset(ls_key,'Driver','C:\WINDOWS\SYSTEM\odbcjt32.dll')
Registryset(ls_key,'DriverId',ReguLong!,280)
Registryset(ls_key,'FIL',"FoxPro 2.0")
Registryset(ls_key,'SafeTransactions',ReguLong!,0)
Registryset(ls_key,'UID',"")
Registryset(ls_key+'\Engines\Xbase','CollatingSequence','ASCII')
Registryset(ls_key+'\Engines\Xbase','Deleted',Regulong!,1)
Registryset(ls_key+'\Engines\Xbase','ImplicitCommitSync','Yes')
Registryset(ls_key+'\Engines\Xbase','PageTimeout',ReguLong!,600)
Registryset(ls_key+'\Engines\Xbase','Statistics',Regulong!,0)
Registryset(ls_key+'\Engines\Xbase','Threads',Regulong!,3)
Registryset(ls_key+'\Engines\Xbase','UserCommitSync','Yes')
Registryset(ls_key1,s_dbfname,"Microsoft FoxPro Driver (*.dbf)")
end if
...
二、在建立联接前先创建该ODBC的相关信息,如
...
string ls_dbfname="c:\Foxprow\Database"
gf_create_odbc('TestDBF','FOXPRO',ls_dbfname)
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.Database = 'TestDBF'
SQLCA.dbparm = "ConnectString='DSN=TestDBF'"
connect using sqlca;
if sqlca.sqlcode <> 1 then
messagebox('错误','无法连接到制定的数据库文件!('+ls_dbfname+')',stopsign!)
halt close;
end if
...
三、删除该ODBC设置;
创建公用函数 gf_erase_odbc(string as_odbc_name)
...
通过以上步骤,就不需要通过控制面板中的 ODBC工具来设置了。
您可以考虑以下改进:
1、增加ODBC创建函数的参数设置;
2、自己做一个ODBC的设置工具,可以在系统内运行;
3、ODBC驱动程序可以指定到特定的目录或文件。
mittee 2003-11-24
  • 打赏
  • 举报
回复
pb里取得和修改注册表都很方便。
starwill 2003-11-24
  • 打赏
  • 举报
回复
除了用Registry函数外,还可以做个安装程序,程序安装时注册ODBC!

754

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧