当前位置: 代码迷 >> PB >> PB 发布的exe 怎通过Odbc 或 jdbc 连接MYSQL?
  详细解决方案

PB 发布的exe 怎通过Odbc 或 jdbc 连接MYSQL?

热度:281   发布时间:2016-04-29 05:20:54.0
求助PB 发布的exe 怎通过Odbc 或 jdbc 连接MYSQL??
求助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
  相关解决方案