pb自动注册ODBC的sqlanywhere数据源

来源:互联网 发布:怎么查看我的淘宝等级 编辑:程序博客网 时间:2024/05/20 06:22


pb自动注册ODBC的sqlanywhere数据源

(2013-04-09 13:13:12)
转载
标签:

pb9

odbc

自动注册

sqlanywhere

 

pb自动注册ODBC的sqlanywhere数据源,需要把相应的sqlanywhere和数据库文件copy到当前程序所在文件夹,这里用的sqlanywhere8.0,f_app_path()函数获取当前程序路径,方法见我的博客pb9获得当前程序所在路径及中文字符长度处理。在连接数据时SQLCA.DBParm = "ConnectString='DSN=xtgl;UID=DBA;PWD=SQL'"+ &
             "ConnectOption='SQL_DRIVER_CONNECT,SQL_DRIVER_NOPROMPT'"  这句可以让连接不上数据库时不出现配置数据源对话框。代码在winXP和win7,windows2008下试过,可以注册。

Ulong ul_num;
Int li_sysdir,li_dir1,li_dir2,li_dir3,li_dir4,li_dir5,li_dir6,li_app;
String ls_driver,ls_start,ls_location,ls_apppath,ls_odbcstr,ls_db_path

ls_location = f_app_path()
ls_start = ls_location+'dbeng80.EXE'
ls_driver = ls_location+'dbodbc8.dll'

//设置ODBCODBCINST.INIODBC DRIVERS
li_sysdir=RegistrySet('HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBC DRIVERS','Adaptive Server Anywhere 8.0',RegString!,'Installed');
IF li_sysdir = -1 THEN
 Messagebox('错误','应用程序无法设置ODBC DRIVERS,系统将终止运行,StopSign!');
 RETURN;
END IF
//设置ODBCODBCINST.INI  
li_dir2=RegistrySet('HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Adaptive Server Anywhere 8.0','Driver',RegString!,ls_driver)
li_dir3=RegistrySet('HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Adaptive Server Anywhere 8.0','Setup',RegString!,ls_driver)
IF li_dir2=-1 OR li_dir3=-1 THEN
 Messagebox('错误','应用程序无法设置ODBCINST.INI,系统将终止运行,StopSign!');
 RETURN;
END IF
//设置ODBC DATA SOURCE('xtgl'为数据源名)
li_sysdir=RegistrySet('HKEY_current_user\software\odbc\odbc.ini\ODBC Data Sources','xtgl',RegString!,'Adaptive Server Anywhere 8.0');
IF li_sysdir=-1 THEN
 Messagebox('错误','应用程序无法设置ODBC DATA SOURCE,系统将终止运行,StopSign!');
 RETURN;
END IF

ls_db_path=ls_location+'data.db';


//设置ODBC.INI
li_dir1=RegistrySet('HKEY_LOCAL_MACHINE\software\odbc\odbc.ini\xtgl','autostop',RegString!,'yes');
li_dir2=RegistrySet('HKEY_LOCAL_MACHINE\software\odbc\odbc.ini\xtgl','Charset',RegString!,'cp850');
li_dir3=RegistrySet('HKEY_LOCAL_MACHINE\software\odbc\odbc.ini\xtgl','DataBaseFile',RegString!,ls_db_path);
li_dir4=RegistrySet('HKEY_LOCAL_MACHINE\software\odbc\odbc.ini\xtgl','DataBaseName',RegString!,'xtgl');
li_dir5=RegistrySet('HKEY_LOCAL_MACHINE\software\odbc\odbc.ini\xtgl','driver',RegString!,ls_driver);
li_dir6=RegistrySet('HKEY_LOCAL_MACHINE\software\odbc\odbc.ini\xtgl','Integrated',RegString!,'No');

IF li_dir1=-1 OR li_dir2=-1 OR li_dir3=-1 OR li_dir4=-1 OR li_dir5=-1 OR li_dir6=-1 THEN
 Messagebox('错误','应用程序无法设置ODBC.INI,系统将终止运行!',StopSign!);
 RETURN
END IF


SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=xtgl;UID=DBA;PWD=SQL'"+ &
             "ConnectOption='SQL_DRIVER_CONNECT,SQL_DRIVER_NOPROMPT'"
connect using sqlca;

0 0