关于连接本地数据库非技术问题!
pb如何直接连接本身相对路径下的数据库,不需要配置odbc数据源的。
也就是说可以直接整个文件夹拷贝过去其他机器就可以使用的,用access或者sybase
问题点数:20、回复次数:11Top
1 楼lzp_lrp(lzp)回复于 2004-12-02 12:18:26 得分 2
呵呵,什么也不配置的话,可以也就只有用文本文件做数据库了
不过像access和sybase的连接,你可以在程序里自动配置Top
2 楼qimin168(难得糊涂)回复于 2004-12-02 12:18:29 得分 0
先添加注冊表信息,
用install shield打包工具就可以自動添加注冊表,然后把odbc的動態連結庫文件拷過來就可以了Top
3 楼wanggjvc(王光杰)回复于 2004-12-02 12:31:49 得分 0
sybase需要什么文件?如何用pb编程启动它
access不需要动态连接库的吧。windows自己有。 是要每次程序启动时在注册表里注册路径和odbc配置信息吗?Top
4 楼wanggjvc(王光杰)回复于 2004-12-02 13:58:13 得分 0
有实例吗Top
5 楼wanggjvc(王光杰)回复于 2004-12-02 14:14:39 得分 0
我用别的软件,重装系统还是能连接到数据库。用的是sybase,我看吧一些sybase的可执行文件拷贝到软件根目录的。 如何做?Top
6 楼xirumin(吃好喝好)回复于 2004-12-02 15:47:56 得分 2
access可以用ole db连接Top
7 楼airfont(草原劣马)回复于 2004-12-02 17:23:40 得分 4
用.ini文件进行配置很方便的,若要我这有现成的,可以给你!Top
8 楼wanggjvc(王光杰)回复于 2004-12-02 18:01:53 得分 0
/*------------------------------------------------------------*/
// 参数:
//
// [value] string as_odbc_name
// <description>:数据源名称
// [value] string as_odbc_type
// <description>:数据源类型[asa7,SQLANY,DBF,FOXPRO,access]
// [value] string as_path
// <description>:数据库驱动与数据库文件放置的目录
// 注意:两者放在同一目录下
// [value] string as_dbname
// <description>:数据库名称,注意不要写后缀
/*------------------------------------------------------------*/
// 返回值: (NONE)
/*------------------------------------------------------------*/
// 作者: pcm 日期: 2003-12-1
/*============================================================*/
string ls_key,ls_key1,ls_keyaccess
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 = 'asa7' then
Registryset(ls_key,'Driver',as_path+"dbodbc7.dll")
Registryset(ls_key,'Description',"自动生成ODBC'")
Registryset(ls_key,'UID',"DBA")
Registryset(ls_key,'PWD',"SQL")
Registryset(ls_key,'Start',as_path+'dbeng7.exe')
Registryset(ls_key,'DatabaseFile',as_path+as_dbname+'.DB')
Registryset(ls_key,'DatabaseName',as_odbc_name)
Registryset(ls_key,'AutoStop',"Yes")
Registryset(ls_key1,as_odbc_name,"Adaptive Server Anywhere 7.0")
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_dbname+'.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 = '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 = '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,as_dbname,"Microsoft FoxPro Driver (*.dbf)")
end if
ls_keyaccess = "HKEY_USERS\S-1-5-21-602162358-1708537768-839522115-500\Software\ODBC\ODBC.INI"+as_odbc_name
if as_odbc_type = 'access' then
Registryset(ls_keyaccess,'DBQ',as_path+'\'+as_dbname+'.mdb')
Registryset(ls_keyaccess,'Description',as_odbc_name+"的自动ODBC'")
Registryset(ls_keyaccess,'Driver',"D:\\WINNT\\System32\\odbcjt32.dll")
Registryset(ls_keyaccess,'DriverId',ReguLong!,25)
Registryset(ls_keyaccess,'FIL',"MS Access;")
Registryset(ls_keyaccess,'SafeTransactions',ReguLong!,0)
Registryset(ls_keyaccess,'UID',"")
Registryset(ls_keyaccess+'\Engines\Jet','MaxBufferSize',Regulong!,2048)
Registryset(ls_keyaccess+'\Engines\Jet','ImplicitCommitSync','')
Registryset(ls_keyaccess+'\Engines\Jet','PageTimeout',ReguLong!,5)
Registryset(ls_keyaccess+'\Engines\Jet','Statistics',Regulong!,0)
Registryset(ls_keyaccess+'\Engines\Jet','Threads',Regulong!,3)
end if
这个行吗?
数据库驱动与数据库文件放置的目录 注意:两者放在同一目录下
这个我不懂。从那里找驱动。要把数据库文件放到winnt\system32目录下吗Top
9 楼wanggjvc(王光杰)回复于 2004-12-03 14:53:29 得分 0
ls_keyaccess = "HKEY_USERS\S-1-5-21-602162358-1708537768-839522115-500
可惜access这个数据库字段是随机生成的啊,我重新安装一个系统就变成S-1-5-21-880237283-2725007785-1028829812-500。不同系统也不一样吧Top
10 楼renwanly(★★★★)回复于 2004-12-03 16:23:46 得分 10
你可以考虑用ole方式连接数据库,
//下面是ASA的,记得发布时带着pbole90.dll
SQLCA.DBMS = "OLE DB"
SQLCA.LogPass = <********>
SQLCA.LogId = "DBA"
SQLCA.AutoCommit = False
SQLCA.DBParm = "PROVIDER='ASAProv.80',PROVIDERSTRING='dbf=E:\soft\20038291455449608\Domestic\DOMESTIC.DB',DATASOURCE='(local)',CommitOnDisconnect='No'"
//下面是access的
// Profile localDb:admin@renwanly:oleDB_msdasql
SQLCA.DBMS = "OLE DB"
SQLCA.AutoCommit = False
SQLCA.DBParm = "PROVIDER='MSDASQL',PROVIDERSTRING='dbq=LocalDB.db;Driver={Microsoft Access Driver (*.mdb)};uid=admin;pwd=123456',CommitOnDisconnect='No',MODE='DB_MODE_READWRITE',DateFormat='yyyy年mm月dd日',DateTimeFormat='yyyy年mm月dd日',TimeFormat='hh:mm'"
这样就OK了Top
11 楼tw829(唐牛)回复于 2004-12-03 17:07:36 得分 2
上面,上面!
:)Top




