【SQL开源代码栏目提醒】:网学会员SQL开源代码为您提供【最新】Powerbuilder中实现用代码配置ODBC - 综合课件参考,解决您在【最新】Powerbuilder中实现用代码配置ODBC - 综合课件学习中工作中的难题,参考学习。
Powerbuilder中实现用
代码配置ODBC 一、 引言 Powerbuilder是客户端的开发工具在实际应用中必须与数据库
管理系统配合起来才能运行应用程序它与数据库的连接可以通过ODBC接口实现。
在ODBC中配置好数据源后便可在程序
代码中连接数据库并对数据库进行各种操作了。
目前的大部分PB参考书都只介绍了ODBC的手工配置方法而没有介绍如何在
代码中进行ODBC的配置这样当程序最终完成并分发到用户手中后还需要为用户配置ODBC显得既麻烦又不符合专业
软件的要求。
那么怎样才能在
代码中实现对ODBC的配置呢其实Windows中所有的ODBC数据源在系统注册表中都有记载因此只要对注册表中的项目进行相应的修改即可。
与ODBC相关的键中HKEY_LOCAL_MACHINESoftwareODBCODBCINST.INIODBCDRIVER中记录了所有已安装的ODBC驱动程序HKEY_LOCAL_MACHINESoftwareODBCODBCINST.INI中记录了各种ODBC驱动程序的相关信息HKEY_CURRENT_USERSoftwareODBCODBC.INIODBC Data Sources记录了各种数据源的类型HKEY_CURRENT_USERSoftwareODBCODBC.INI则记录了各种数据源的详细信息。
因此只要在
代码中对这些键进行配置便可达到手工配置ODBC的目的。
二、在
代码中配置ODBC的实现 下面以Powerbuilder内置的Sybase
SQL Anywhere5.0数据库为例介绍ODBC的
代码配置方法。
1、 找出数据库驱动程序及相关文件 首先找到相应的数据库驱动程序这些文件可以在
注册表的HKEY_LOCAL_MACHINESoftwareODBCODBCINST.INI下相应键中找到。
如Sybase
SQL Anywhere5.0为dbeng50.EXEWOD50T.DLL以及一些其他相关的动态链接库此例中为Dbl50t.dllWl50ent.dllWtr50t.dllWodbc.gidWtr50t.dll。
这些文件必须与最终的可执行程序一起安装到用户的计算机上可以与应用程序放在一起也可以放在一个特定的目录下本例为Windows的system目录下。
在调试时可先将这些文件复制到指定的目录下。
2、 在程序中用
代码配置ODBC 在应用的open事件中对ODBC配置的
代码如下 Ulong ul_num Int answeranswer1answer2answer3answer4answer5ansapp String ls_driverls_startls_locationapppathdb_pathodbcstr //获取操作系统的system目录并保存到ls_location变量 answerRegistryGetKYEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionSetupSysDirRegStringls_location IF answer-1 THEN Messagebox错误应用程序无法获取Windows的系统目录系统统将终止运行Stopsign RETURN END IF //判断Sybase
SQL Anywhere5.0的驱动程序是否正确安装 ls_driverls_locationWOD50T.DLL ls_startls_locationdbeng50.EXE IF NOT FileExistsls_driver AND FileExistsls_start THEN Messagebox错误系统中没有安装
SQL Anywhere的驱动
程序系统将终止运行StopSign RETURN END IF //设置ODBCODBCINST.INIODBC DRIVERS answerRegistrySet HKEY_LOCAL_MACHINESoftwareODBCODBCINST.INIODBCDRIVERSybase
SQL Anywhere 5.0RegStringInstalled IF answer-1 THEN Messagebox错误应用程序无法设置ODBC DRIVERS系统将终止运行StopSign RETURN END IF //设置ODBCODBCINST.INI answer1RegistrySet HKEY_LOCAL_MACHINESoftwareODBCODBCINST.INISybase
SQL Anywhere 5.0CPTimeoutRegStringnot pooled answer2RegistrySet HKEY_LOCAL_MACHINESoftwareODBCODBCINST.INISybase
SQL Anywhere 5.0DriverRegStringls_driver answer3RegistrySet HKEY_LOCAL_MACHINESoftwareODBCODBCINST.INISybase
SQL Anywhere 5.0SetupRegStringls_driver IF answer1-1 OR answer2-1 OR answer3-1 THEN Messagebox错误应用程序无法设置ODBCINST.INI系统将终止运行StopSign RETURN END IF //设置ODBC DATA SOURCE名称anysql为数据源名 answerRegistrySet HKEY_LOCAL_MACHINESoftwareODBCODBCINST.INIODBC Data SourcesanysqlRegStringSybase
SQL Anywhere 5.0 IF answer-1 THEN Messagebox错误应用程序无法设置ODBC DATA SOURCE名称系统将终止运行StopSign RETURN END IF //获取应用程序的安装路径ybinput为应用程序安装到用户
计算机上后在注册表中注册的应用程序名yibiao.db为应用程序的数据库名与应用程序在同一目录下anysql为数据源名 ansappRegistryGetKYEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionApp PathsybinputPathRegStringapp_path IF ansapp-1 THEN Messagebox错误应用程序无法获取安装路径名系统将终止运行StopSign RETURN ELSE db_pathapp_pathyibiao.db END IF //设置ODBC.INI的细节 answer1RegistrySetHKEY_current_usersoftwareodbcodbc.inianysqldriverRegStringls_driver answer2RegistrySetHKEY_current_usersoftwareodbcodbc.inianysqlstartRegStringls_start answer3RegistrySetHKEY_current_usersoftwareodbcodbc.inianysqlautostopRegStringyes answer4RegistrySetHKEY_current_usersoftwareodbcodbc.inianysqlDataBaseFileRegStringdb_path answer5RegistrySetHKEY_current_usersoftwareodbcodbc.iniany
sqlDataBaseNameRegStringyibiao IF answer1-1 OR answer2-1 OR answer3-1 OR answer4-1 OR answer5-1 THEN Messagebox错误应用程序无法设置ODBC.INI细节系统将终止运行StopSign RETURN END IF odbcstrdsnanysqldatabasenameyibiaodatabasefiledb_path sqlca.dbmsodbc sqlca.databseyibiao sqlca.dbparmconnectstringodbcstruiddbapwdsql connect using sqlca openw_main 该程序在Powerbuilder6.0下运行通过。