没有自动创建MySQL ODBC问题

r00_a2lBUR 2018-08-16 05:48:52

//***********************************************
// 函数名: gf_setodbc_mysql
// 功能: 完成mysql数据源的注册功能
// 输入参数:
// as_server 服务器名称
// as_database 数据库名
// as_user 用户名
// as_pwd 密码
// 返回值:
// true 表示自动配置成功
// false 表示自动配置失败
//***************************************************

boolean lb_rtn
string ls_root,ls_root_dsn,ls_root_Jet,ls_root_Engines
integer li_rtn
string ls_dsnname,ls_dbfullname,ls_driver,temp,ls_version
string ls_apppath
//
//integer rtn

//生成驱动程序所在路径gs_appdir为应用目录
ls_driver = gs_appdir + "\myodbc5.dll"
lb_rtn = true
ls_root = "HKEY_LOCAL_MACHINE\software\odbc\odbc.ini"
//数据源名字为:文件名字+“_DT”
ls_dsnname = as_database + "_DT"
ls_root_dsn = ls_root + "\" + ls_dsnname
//ls_root_Engines = ls_root_dsn + "\" + "Engines"
//ls_root_Jet = ls_root_Engines + "\" + "Jet"
ls_dbfullname = as_database
//注册数据源的名字
li_rtn = registryset(ls_root,ls_dsnname,regstring!,"")
if li_rtn= - 1 then
return false
end if
//注册数据库名字
li_rtn = registryset(ls_root_dsn,"DATABASE",regstring!,ls_dbfullname)
if li_rtn= - 1 then
return false
end if
//注册数据库驱动程序
li_rtn = registryset(ls_root_dsn,"Driver",regstring!,ls_driver)//"C:\Program Files\MySQL\Connector ODBC 5.1\myodbc5.dll")//"C:\WINNT\system32\odbcjt32.dll")
if li_rtn= - 1 then
return false
end if
//注册端口号
li_rtn = registryset(ls_root_dsn,"PORT",regstring!,"3306")
if li_rtn= - 1 then
return false
end if
li_rtn = registryset(ls_root_dsn,"Description",regstring!,"Demo_AutoDSN")
if li_rtn= - 1 then
return false
end if
//注册数据库服务器
li_rtn = registryset(ls_root_dsn,"SERVER",regstring!,as_server)
if li_rtn= - 1 then
return false
end if
//注册数据库用户名
li_rtn = registryset(ls_root_dsn,"UID",regstring!,as_user)
if li_rtn= - 1 then
return false
end if
//注册数据库密码
li_rtn = registryset(ls_root_dsn,"PWD",regstring!,as_pwd)
if li_rtn= - 1 then
return false
end if
//OPTION
li_rtn = registryset(ls_root_dsn,"OPTION",regstring!,"4096")
if li_rtn= - 1 then
return false
end if
return lb_rtn

XP系统 PB11.5运行以上函数代码,ODBC却没有出来,请教有做过这个功能的论坛大牛们,这个是怎么回事?或者有相同的功能帮忙共享一下。
...全文
488 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
r00_a2lBUR 2018-09-04
  • 打赏
  • 举报
回复
引用 11 楼 husonyao 的回复:
[quote=引用 10 楼 r00_a2lBUR 的回复:]
[quote=引用 3 楼 husonyao 的回复:]
先按照下面代码处理,PORT和option可以不要 ,如果不行可以尝试 regsvr32.exe 目录\myodbc5.dll /i /s ,再不行的先安装myodbc Windows版本
如果存在中文乱码 connect 完成后执行下面语句;
string ls_sql
ls_sql='SET NAMES GBK;'
EXECUTE immediate:ls_sql;
////////////////////////////////////////////以下为连接语句

ls_dsn="SQL123"
ls_driver = gs_appdir + "\myodbc5.dll"
RegistrySet ("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\"+ls_dsn,"Driver",RegString!,lsdriver)
RegistrySet ("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\"+ls_dsn,"setup",RegString!,lsdriver)
RegistrySet ("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBC Drivers","SQL123",RegString!,"Installed")

ls_conn=“ConnectString='DRIVER={SQL123};SERVER=xxx.xxx.xxx.xxx;DATABASE=xxxx;UID=xxxx;PWD=xxxx;PORT=3306;OPTION=3',ConnectOption='SQL_DRIVER_CONNECT,SQL_DRIVER_NOPROMPT' "

sqlca.DBMS = "ODBC"
sqlca.AutoCommit = False
sqlca.DBParm = ls_conn
connect using sqlca;

试了一下,可以连接。我原来的那些代码原来也是可以自动新建ODBC连接,在注册表中可以看到,但在控制面板中没有显示,用是可以用[/quote]
ConnectOption='SQL_DRIVER_CONNECT,SQL_DRIVER_NOPROMPT' " 之后链接错误不会弹出烦人ODBC连接框[/quote]
OPTION=3这个又是什么?
WMERP 2018-09-03
  • 打赏
  • 举报
回复
引用 10 楼 r00_a2lBUR 的回复:
[quote=引用 3 楼 husonyao 的回复:]
先按照下面代码处理,PORT和option可以不要 ,如果不行可以尝试 regsvr32.exe 目录\myodbc5.dll /i /s ,再不行的先安装myodbc Windows版本
如果存在中文乱码 connect 完成后执行下面语句;
string ls_sql
ls_sql='SET NAMES GBK;'
EXECUTE immediate:ls_sql;
////////////////////////////////////////////以下为连接语句

ls_dsn="SQL123"
ls_driver = gs_appdir + "\myodbc5.dll"
RegistrySet ("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\"+ls_dsn,"Driver",RegString!,lsdriver)
RegistrySet ("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\"+ls_dsn,"setup",RegString!,lsdriver)
RegistrySet ("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBC Drivers","SQL123",RegString!,"Installed")

ls_conn=“ConnectString='DRIVER={SQL123};SERVER=xxx.xxx.xxx.xxx;DATABASE=xxxx;UID=xxxx;PWD=xxxx;PORT=3306;OPTION=3',ConnectOption='SQL_DRIVER_CONNECT,SQL_DRIVER_NOPROMPT' "

sqlca.DBMS = "ODBC"
sqlca.AutoCommit = False
sqlca.DBParm = ls_conn
connect using sqlca;

试了一下,可以连接。我原来的那些代码原来也是可以自动新建ODBC连接,在注册表中可以看到,但在控制面板中没有显示,用是可以用[/quote]
ConnectOption='SQL_DRIVER_CONNECT,SQL_DRIVER_NOPROMPT' " 之后链接错误不会弹出烦人ODBC连接框
r00_a2lBUR 2018-09-03
  • 打赏
  • 举报
回复
引用 3 楼 husonyao 的回复:
先按照下面代码处理,PORT和option可以不要 ,如果不行可以尝试 regsvr32.exe 目录\myodbc5.dll /i /s ,再不行的先安装myodbc Windows版本
如果存在中文乱码 connect 完成后执行下面语句;
string ls_sql
ls_sql='SET NAMES GBK;'
EXECUTE immediate:ls_sql;
////////////////////////////////////////////以下为连接语句

ls_dsn="SQL123"
ls_driver = gs_appdir + "\myodbc5.dll"
RegistrySet ("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\"+ls_dsn,"Driver",RegString!,lsdriver)
RegistrySet ("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\"+ls_dsn,"setup",RegString!,lsdriver)
RegistrySet ("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBC Drivers","SQL123",RegString!,"Installed")

ls_conn=“ConnectString='DRIVER={SQL123};SERVER=xxx.xxx.xxx.xxx;DATABASE=xxxx;UID=xxxx;PWD=xxxx;PORT=3306;OPTION=3',ConnectOption='SQL_DRIVER_CONNECT,SQL_DRIVER_NOPROMPT' "

sqlca.DBMS = "ODBC"
sqlca.AutoCommit = False
sqlca.DBParm = ls_conn
connect using sqlca;

试了一下,可以连接。我原来的那些代码原来也是可以自动新建ODBC连接,在注册表中可以看到,但在控制面板中没有显示,用是可以用
r00_a2lBUR 2018-09-03
  • 打赏
  • 举报
回复
引用 8 楼 husonyao 的回复:
[quote=引用 7 楼 r00_a2lBUR 的回复:]
[quote=引用 4 楼 husonyao 的回复:]
ls_driver lsdriver 是同一个变量,写错了

没有发现这个[/quote]

ls_driver = gs_appdir + "\myodbc5.dll"
RegistrySet ("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\"+ls_dsn,"Driver",RegString!,lsdriver)
RegistrySet ("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\"+ls_dsn,"setup",RegString!,lsdriver)
[/quote]

原来是指回复的那个,那个项目我试过,是可以连接
WMERP 2018-09-03
  • 打赏
  • 举报
回复
引用 7 楼 r00_a2lBUR 的回复:
[quote=引用 4 楼 husonyao 的回复:]
ls_driver lsdriver 是同一个变量,写错了

没有发现这个[/quote]

ls_driver = gs_appdir + "\myodbc5.dll"
RegistrySet ("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\"+ls_dsn,"Driver",RegString!,lsdriver)
RegistrySet ("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\"+ls_dsn,"setup",RegString!,lsdriver)
r00_a2lBUR 2018-09-02
  • 打赏
  • 举报
回复
引用 4 楼 husonyao 的回复:
ls_driver lsdriver 是同一个变量,写错了

没有发现这个
r00_a2lBUR 2018-09-02
  • 打赏
  • 举报
回复
引用 4 楼 husonyao 的回复:
ls_driver lsdriver 是同一个变量,写错了

没有发现这个
r00_a2lBUR 2018-08-24
  • 打赏
  • 举报
回复
引用 3 楼 husonyao 的回复:
先按照下面代码处理,PORT和option可以不要 ,如果不行可以尝试 regsvr32.exe 目录\myodbc5.dll /i /s ,再不行的先安装myodbc Windows版本
如果存在中文乱码 connect 完成后执行下面语句;
string ls_sql
ls_sql='SET NAMES GBK;'
EXECUTE immediate:ls_sql;
////////////////////////////////////////////以下为连接语句

ls_dsn="SQL123"
ls_driver = gs_appdir + "\myodbc5.dll"
RegistrySet ("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\"+ls_dsn,"Driver",RegString!,lsdriver)
RegistrySet ("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\"+ls_dsn,"setup",RegString!,lsdriver)
RegistrySet ("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBC Drivers","SQL123",RegString!,"Installed")

ls_conn=“ConnectString='DRIVER={SQL123};SERVER=xxx.xxx.xxx.xxx;DATABASE=xxxx;UID=xxxx;PWD=xxxx;PORT=3306;OPTION=3',ConnectOption='SQL_DRIVER_CONNECT,SQL_DRIVER_NOPROMPT' "

sqlca.DBMS = "ODBC"
sqlca.AutoCommit = False
sqlca.DBParm = ls_conn
connect using sqlca;
先谢谢了,找时间试一下
WMERP 2018-08-21
  • 打赏
  • 举报
回复
ls_driver lsdriver 是同一个变量,写错了
WMERP 2018-08-21
  • 打赏
  • 举报
回复
先按照下面代码处理,PORT和option可以不要 ,如果不行可以尝试 regsvr32.exe 目录\myodbc5.dll /i /s ,再不行的先安装myodbc Windows版本
如果存在中文乱码 connect 完成后执行下面语句;
string ls_sql
ls_sql='SET NAMES GBK;'
EXECUTE immediate:ls_sql;
////////////////////////////////////////////以下为连接语句

ls_dsn="SQL123"
ls_driver = gs_appdir + "\myodbc5.dll"
RegistrySet ("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\"+ls_dsn,"Driver",RegString!,lsdriver)
RegistrySet ("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\"+ls_dsn,"setup",RegString!,lsdriver)
RegistrySet ("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBC Drivers","SQL123",RegString!,"Installed")

ls_conn=“ConnectString='DRIVER={SQL123};SERVER=xxx.xxx.xxx.xxx;DATABASE=xxxx;UID=xxxx;PWD=xxxx;PORT=3306;OPTION=3',ConnectOption='SQL_DRIVER_CONNECT,SQL_DRIVER_NOPROMPT' "

sqlca.DBMS = "ODBC"
sqlca.AutoCommit = False
sqlca.DBParm = ls_conn
connect using sqlca;
r00_a2lBUR 2018-08-21
  • 打赏
  • 举报
回复
引用 1 楼 husonyao 的回复:
可以试试直接用DBPARM=“CONNECTSTRING。。。。。。。。试试
可以举个例子吗?
WMERP 2018-08-20
  • 打赏
  • 举报
回复
可以试试直接用DBPARM=“CONNECTSTRING。。。。。。。。试试

1,079

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧