求助PB 发布的exe 怎通过Odbc 或 jdbc 连接MYSQL??
PB版本是12.5 连接MYSQL发布程序,无法在另一台机连接到数据库。
在网上查找说用 Odbc连接是通过注册表注册驱动和填上连接。
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\MYSQL]
"Driver"="C:\\Program Files (x86)\\MySQL\\Connector ODBC 5.2\\myodbc5a.dll"
"SERVER"="127.0.0.1"
"UID"="root"
"PWD"=""
"DATABASE"="temp"
"PORT"="3306"
[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources]
"MYSQL"="MySQL ODBC 5.2 ANSI Driver"
测试过不行。。
jdbc好像需要每台机添加环境变量?具体那个方法可以和实用一点?
------解决思路----------------------
// Profile server
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
ls_server = 'localhost'
ls_port = '3307'
ls_db = 'test'
ls_uid = 'root'
ls_pwd = 'root'
SQLCA.DBParm = "ConnectString='Driver={MySQL ODBC 5.1 Driver};server="+ls_server+";port="+ls_port+";database="+ls_db+";option=4096;UID="+ls_uid+";PWD="+ls_pwd+"',CommitOnDisconnect='No',ConnectOption='SQL_DRIVER_CONNECT,SQL_DRIVER_NOPROMPT'"
------解决思路----------------------
可以参考以下内容
pb自动注册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