jami 发表于 2005-12-21 23:51:46

[转帖]关于动态注册ODBC数据源.

<P ><FONT face=宋体>1.<B>关于动态注册Access数据源</B><o:p></o:p></FONT></P>
<P ><FONT face=宋体>//***********************************************<BR>//</FONT><FONT face=宋体>函数名</FONT><FONT face=宋体>:gf_setodbc_access<BR>//      功能:完成access数据源的注册功能</FONT><BR><FONT face=宋体>//</FONT><FONT face=宋体>输入参数</FONT><FONT face=宋体>:<BR>//    as_database数据库名</FONT><BR><FONT face=宋体>//   (</FONT><FONT face=宋体>即Access数据库文件名字,不含扩展名</FONT><FONT face=宋体>)<BR>//    as_path   数据库文件所在的目录</FONT><BR><FONT face=宋体>//</FONT><FONT face=宋体>返回值</FONT><FONT face=宋体>:<BR>//   true表示自动配置成功</FONT><BR><FONT face=宋体>//   false</FONT><FONT face=宋体>表示自动配置失败</FONT><BR><FONT face=宋体>//</FONT><FONT face=宋体>设计者</FONT><FONT face=宋体>: Adamswater<BR>//完成时间: 2005年6月</FONT><BR><FONT face=宋体>//***************************************************<BR>boolean lb_rtn<BR>string ls_root,ls_root_dsn,ls_root_Jet,ls_root_Engines<BR>integer li_rtn<BR>string ls_dsnname,ls_dbfullname,ls_driver,temp,ls_version <BR>string ls_syspath<BR>environment env<o:p></o:p></FONT></P>
<P ><FONT face=宋体>integer rtn<o:p></o:p></FONT></P>
<P ><FONT face=宋体>ls_syspath = Space( 40 ) <BR>//</FONT><FONT face=宋体>获得操作系统的目录</FONT><BR><FONT face=宋体>GetSystemDirectoryA(ls_syspath,60)<BR>ls_driver = ls_syspath + "\odbcjt32.dll"<BR>lb_rtn = true<BR>ls_root = "HKEY_LOCAL_MACHINE\software\odbc\odbc.ini"<BR>//</FONT><FONT face=宋体>数据源名字为:文件名字+“_DT”</FONT><BR><FONT face=宋体>ls_dsnname = as_database + "_DT" <BR>ls_root_dsn = ls_root + "\" + ls_dsnname<BR>ls_root_Engines = ls_root_dsn + "\" + "Engines"<BR>ls_root_Jet = ls_root_Engines + "\" + "Jet"<BR>ls_dbfullname = as_path + "\" + as_database + ".mdb"<BR>//</FONT><FONT face=宋体>注册数据源的名字</FONT><BR><FONT face=宋体>li_rtn = registryset(ls_root,ls_dsnname,regstring!,"")<BR>if li_rtn= - 1 then<BR>return false<BR>end if<BR>//</FONT><FONT face=宋体>注册数据库名字</FONT><BR><FONT face=宋体>li_rtn = registryset(ls_root_dsn,"DBQ",regstring!,ls_dbfullname)<BR>if li_rtn= - 1 then<BR>return false<BR>end if<BR>//</FONT><FONT face=宋体>注册数据库驱动程序</FONT><BR><FONT face=宋体>li_rtn = registryset(ls_root_dsn,"Driver",regstring!,ls_driver)<BR>if li_rtn= - 1 then<BR>return false<BR>end if<o:p></o:p></FONT></P>
<P ><FONT face=宋体>//</FONT><FONT face=宋体>注册其它项</FONT><BR><FONT face=宋体>li_rtn = registryset(ls_root_dsn,"FIL",regstring!,"MS Access;")<BR>if li_rtn= - 1 then<BR>return false<BR>end if<BR>li_rtn = registryset(ls_root_dsn,"Description",regstring!,"</FONT><FONT face=宋体>条形码打印程序</FONT><FONT face=宋体>")<BR>if li_rtn= - 1 then<BR>return false<BR>end if<BR>li_rtn = registryset(ls_root_dsn,"UID",regstring!,"")<BR>if li_rtn= - 1 then<BR>return false<BR>end if<BR>li_rtn = registryset(ls_root_dsn,"DriverId", RegULong!,25)<BR>if li_rtn= - 1 then<BR>return false<BR>end if<BR>li_rtn = registryset(ls_root_dsn,"SafeTransactions", RegULong!,0)<BR>if li_rtn= - 1 then<BR>return false<BR>end if<BR>//注册"Engines"项</FONT><BR><FONT face=宋体>li_rtn = registryset(ls_root_dsn,"Engines",regstring!,"")<BR>if li_rtn= - 1 then<BR>return false<BR>end if<BR>//</FONT><FONT face=宋体>注册"Jet"项</FONT><BR><FONT face=宋体>li_rtn = registryset(ls_root_Engines,"Jet",regstring!,"")<BR>if li_rtn= - 1 then<BR>return false<BR>end if<BR>//</FONT><FONT face=宋体>注册"Jet"项的各个子项</FONT><BR><FONT face=宋体>li_rtn = registryset(ls_root_Jet,"ImplicitCommitSync",regstring!,"")<BR>if li_rtn= - 1 then<BR>return false<BR>end if<BR>li_rtn = registryset(ls_root_Jet,"UserCommitSync",regstring!,"Yes")<BR>if li_rtn= - 1 then<BR>return false<BR>end if<BR>li_rtn = registryset(ls_root_Jet,"MaxBufferSize", RegULong!,2048)<BR>if li_rtn= - 1 then<BR>return false<BR>end if<BR>li_rtn = registryset(ls_root_Jet,"PageTimeout", RegULong!,5)<BR>if li_rtn= - 1 then<BR>return false<BR>end if<BR>li_rtn = registryset(ls_root_Jet,"Threads", RegULong!,3)<BR>if li_rtn= - 1 then<BR>return false<BR>end if<BR>return lb_rtn<o:p></o:p></FONT></P>
<P ><FONT face=宋体>2.<B>关于动态注册DBF数据源</B><o:p></o:p></FONT></P>
<P ><FONT face=宋体>//************************************************************//<BR>//</FONT><FONT face=宋体>函数名</FONT><FONT face=宋体>:autosetodbc             // <BR>//      功能:主要是根据传入的库文件名,自动完成ODBC的配置</FONT><FONT face=宋体> //<BR>//      一文件名在ODBC中注册数据源</FONT><FONT face=宋体>      //<BR>//      输入</FONT><FONT face=宋体>:                  // <BR>//   ls_file文件名称(主要是库文件</FONT><FONT face=宋体>)      //<BR>//   ls_path   文件所在的目录</FONT><FONT face=宋体>      //<BR>//   as_drivedir 驱动程序路径</FONT><FONT face=宋体>         //<BR>//返回值</FONT><FONT face=宋体>:                  //<BR>//   1表示自动配置成功</FONT><FONT face=宋体>          //<BR>//   0表示自动配置失败</FONT><FONT face=宋体>          //<BR>//设计者</FONT><FONT face=宋体>: Adamswater               //<BR>//完成时间: 2003年10月</FONT><FONT face=宋体>            //<BR>//                      //<BR>//************************************************************//<BR>integer li_return//返回值</FONT><BR><FONT face=宋体>string ls_filename//</FONT><FONT face=宋体>库文件名</FONT><BR><FONT face=宋体>string ls_fileend//</FONT><FONT face=宋体>文件的扩展名</FONT><BR><FONT face=宋体>string ls_filedir//</FONT><FONT face=宋体>文件所在的目录</FONT><BR><FONT face=宋体>string ls_driver//</FONT><FONT face=宋体>驱动程序</FONT><BR><FONT face=宋体>integer li_rtn<BR>bloblb_value<BR>string ls_root<BR>string ls_root_table<o:p></o:p></FONT></P>
<P ><FONT face=宋体>li_return = 1<BR>ls_driver = as_drivedir + +"\vfpodbc.dll"<BR>ls_fileend = right(ls_file,3)//</FONT><FONT face=宋体>获得文件的扩展名</FONT><BR><FONT face=宋体>ls_filename = left(ls_file,pos(ls_file,'.',1) - 1) //</FONT><FONT face=宋体>获得文件名</FONT><BR><FONT face=宋体>ls_filedir = ls_path//left(ls_path,lastpos(ls_path,'\') - 1)<BR>ls_root = "HKEY_LOCAL_MACHINE\software\odbc\odbc.ini"<BR>ls_root_table = ls_root + "\" + ls_filename<BR>if ls_fileend="dbf" then<BR>//</FONT><FONT face=宋体>先判断是否已经注册过</FONT><BR><FONT face=宋体>//</FONT><FONT face=宋体>当选择的是DBF文件时</FONT><BR><FONT face=宋体>li_rtn = registryset(ls_root,ls_filename,regstring!,"")<BR>if li_rtn= - 1 then<BR>return 0<BR>end if<BR>li_rtn = registryset(ls_root_table,"BackgroundFetch",regstring!,"Yes")<BR>if li_rtn= - 1 then<BR>return 0<BR>end if<BR>li_rtn = registryset(ls_root_table,"Collate",regstring!,"Machine")<BR>if li_rtn= - 1 then<BR>return 0<BR>end if<BR>li_rtn = registryset(ls_root_table,"Deleted",regstring!,"Yes")<BR>if li_rtn= - 1 then<BR>return 0<BR>end if<BR>li_rtn = registryset(ls_root_table,"Collate",regstring!,"Machine")<BR>if li_rtn= - 1 then<BR>return 0<BR>end if<BR>li_rtn = registryset(ls_root_table,"Description",regstring!,"")<BR>if li_rtn= - 1 then<BR>return 0<BR>end if<BR>li_rtn = registryset(ls_root_table,"Driver",regstring!,ls_driver)<BR>if li_rtn= - 1 then<BR>return 0<BR>end if<BR>li_rtn = registryset(ls_root_table,"Exclusive",regstring!,"No")<BR>if li_rtn= - 1 then<BR>return 0<BR>end if<BR>li_rtn = registryset(ls_root_table,"Null",regstring!,"Yes")<BR>if li_rtn= - 1 then<BR>return 0<BR>end if<BR>li_rtn = registryset(ls_root_table,"SetNoCountOn",regstring!,"No")<BR>if li_rtn= - 1 then<BR>return 0<BR>end if<BR>li_rtn = registryset(ls_root_table,"SourceDB",regstring!,ls_filedir)<BR>if li_rtn= - 1 then<BR>return 0<BR>end if<BR>li_rtn = registryset(ls_root_table,"SourceType",regstring!,"DBF")<BR>if li_rtn= - 1 then<BR>return 0<BR>end if<BR>else<BR>end if<BR>return li_return<o:p></o:p></FONT></P>
<P ><FONT face=宋体><B>3.</B><B>关于动态注册SQL Server数据源</B><o:p></o:p></FONT></P>
<P ><FONT face=宋体>//***********************************************<BR>// </FONT><FONT face=宋体>函数名</FONT><FONT face=宋体>: gf_setodbc_sqlserver <BR>// 功能: 完成sqlserver数据源的注册功能</FONT><BR><FONT face=宋体>// </FONT><FONT face=宋体>输入参数</FONT><FONT face=宋体>: <BR>// as_database 数据库名</FONT><BR><FONT face=宋体>// as_server </FONT><FONT face=宋体>服务器名<o:p></o:p></FONT></P>
<P ><FONT face=宋体>// </FONT><FONT face=宋体>返回值</FONT><FONT face=宋体>: <BR>// true 表示自动配置成功</FONT><FONT face=宋体> <BR>// false 表示自动配置失败</FONT><FONT face=宋体> <BR>// 设计者</FONT><FONT face=宋体>: Adamswater <BR>// 完成时间: 2005年6月</FONT><FONT face=宋体> <BR>// <BR>//***************************************************<BR>boolean lb_rtn<BR>string ls_root,ls_root_dsn<BR>integer li_rtn<BR>string ls_dsnname<o:p></o:p></FONT></P>
<P ><FONT face=宋体>lb_rtn = true<BR>ls_root = "HKEY_LOCAL_MACHINE\software\odbc\odbc.ini"<BR>ls_dsnname = as_database + "_DT"//</FONT><FONT face=宋体>数据源的名字:数据库名字_DT,当然可以修改</FONT><BR><FONT face=宋体>ls_root_dsn = ls_root + "\" + ls_dsnname<BR><BR>li_rtn = registryset(ls_root,ls_dsnname,regstring!,"")<BR>if li_rtn= - 1 then<BR>return false<BR>end if<o:p></o:p></FONT></P>
<P ><FONT face=宋体>//</FONT><FONT face=宋体>指定数据库名字</FONT><BR><FONT face=宋体>li_rtn = registryset(ls_root_dsn,"Database",regstring!,as_database)<BR>if li_rtn= - 1 then<BR>return false<BR>end if<o:p></o:p></FONT></P>
<P ><FONT face=宋体>//</FONT><FONT face=宋体>指定驱动程序</FONT><BR><FONT face=宋体>li_rtn = registryset(ls_root_dsn,"Driver",regstring!,'C:\WINNT\System32\SQLSRV32.dll')<BR>if li_rtn= - 1 then<BR>return false<BR>end if<BR>li_rtn = registryset(ls_root_dsn,"LastUser",regstring!,'sa')<BR>if li_rtn= - 1 then<BR>return false<BR>end if<BR>li_rtn = registryset(ls_root_dsn,"Server",regstring!,upper(as_server))<BR>if li_rtn= - 1 then<BR>return false<BR>end if<BR>li_rtn = registryset(ls_root_dsn,"Trusted_Connection",regstring!,'Yes')<BR>if li_rtn= - 1 then<BR>return false<BR>end if<BR>return lb_rtn<o:p></o:p></FONT></P>
<Palign=left><B>4.</B><B>关于动态注册ASA数据库ODBC数据源</B> <o:p></o:p></P>
<Palign=left>//************************************************************//<BR>//函数名:            // <BR>//      功能:主要是根据传入的库文件名,自动完成ODBC的配置 //<BR>//      一文件名在ODBC中注册数据源      //<BR>//      输入:                  // <BR>//   ls_filename文件名称(主要是库文件)      //<BR>//   ls_dir   文件所在的目录      //<BR>//返回值:                  //<BR>//   1表示自动配置成功          //<BR>//   0表示自动配置失败          //<BR>//设计者: Adamswater               //<BR>//完成时间: 2003年10月            //<BR>//************************************************************//<BR>integer li_return//返回值<BR>string ls_filename<BR>integer li_rtn<BR>string ls_root<BR>string ls_root_table<o:p></o:p></P>
<Palign=left>ls_filename = as_filename + ".db"//获得数据库文件名字<o:p></o:p></P>
<Palign=left><BR>ls_root = "HKEY_LOCAL_MACHINE\software\odbc\odbc.ini"<BR>ls_root_table = ls_root + "\" + as_filename<BR>li_return = 1<BR>li_rtn = registryset(ls_root,as_filename,regstring!,"")<BR>if li_rtn= - 1 then<BR>li_return = 0<BR>end if<BR>li_rtn = registryset(ls_root_table,"AutoStop",regstring!,"Yes")<BR>if li_rtn= - 1 then<BR>li_return = 0<BR>end if<BR>li_rtn = registryset(ls_root_table,"Compress",regstring!,"NO")<BR>if li_rtn= - 1 then<BR>return 0<BR>end if<BR>li_rtn = registryset(ls_root_table,"DatabaseFile",regstring!,as_dir + "\"+ls_filename)<BR>if li_rtn= - 1 then<BR>li_return = 0<BR>end if<BR>li_rtn = registryset(ls_root_table,"DatabaseName",regstring!,as_filename)<BR>if li_rtn= - 1 then<BR>li_return = 0<BR>end if<BR>li_rtn = registryset(ls_root_table,"Debug",regstring!,"NO")<BR>if li_rtn= - 1 then<BR>li_return = 0<BR>end if<BR>li_rtn = registryset(ls_root_table,"DisableMultiRowFetch",regstring!,"NO")<BR>if li_rtn= - 1 then<BR>li_return = 0<BR>end if<BR>li_rtn = registryset(ls_root_table,"Driver",regstring!,as_dir + "\"+"dbodbc8.dll")<BR>if li_rtn= - 1 then<BR>li_return = 0<BR>end if<BR>li_rtn = registryset(ls_root_table,"Start",regstring!,as_dir + "\"+"dbeng8.exe -d -c<st1:chmetcnv w:st="on" TCSC="0" NumberType="1" Negative="False" HasSpace="False" SourceValue="8" UnitName="m">8m</st1:chmetcnv>")<BR>if li_rtn= - 1 then<BR>li_return = 0<BR>end if<BR>li_rtn = registryset(ls_root_table,"EngineName",regstring!,"ndjwglxt")<BR>if li_rtn= - 1 then<BR>li_return = 0<BR>end if<BR>li_rtn = registryset(ls_root_table,"Integrated",regstring!,"No")<BR>if li_rtn= - 1 then<BR>li_return = 0<BR>end if<BR>li_rtn = registryset(ls_root_table,"PWD",regstring!,"jwglxt")<BR>if li_rtn= - 1 then<BR>li_return = 0<BR>end if<BR>li_rtn = registryset(ls_root_table,"UID",regstring!,"jwglxt")<BR>if li_rtn= - 1 then<BR>li_return = 0<BR>end if<BR>return li_return<o:p></o:p></P>
<P ><FONT face="Times New Roman">IsUninst"/UNINST=D:\111\UnInst.log" "/APPNAME=</FONT>学生管理系统<FONT face="Times New Roman">"<o:p></o:p></FONT></P>
<P ><o:p><FONT face="Times New Roman"> </FONT></o:p></P>
<P ><FONT face="Times New Roman">C:\WINNT\GPInstall.exe "/UNINST=D:\111\UnInst.log" "/APPNAME=</FONT>学生管理系统<FONT face="Times New Roman">"<o:p></o:p></FONT></P>

awang 发表于 2005-12-26 23:57:08

<P>哈哈</P>
<P>这是我的</P>
<P>支持!</P>
页: [1]
查看完整版本: [转帖]关于动态注册ODBC数据源.

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com