急!!!数据库连不上了(在线等)

kexinlily 2003-06-14 10:22:50
我是用PB8.0做前台的,用PB里的ASA做后台
在自己的机器上能运行的,但是移到别的机器上执行
就会连不上数据库了,找不到数据源
请关各位高手,这是什么原因呀?
该怎么办呢?

help me!!! 

Thanks!!!!!!
...全文
47 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
joss 2003-06-15
  • 打赏
  • 举报
回复
那你一定是没有设置好ODBC和DLL文件不齐了!

按下面内容再自己仔细验证一遍文件是否齐全了!
1.必需的文件 pbvm70.dll,pbdwe70.dll ,libjcc.dll,在PB目录所在的shared目录下
2.需要ODBC支持的 pbodb70.dll,pbodb70.ini(注意这还有个INI文件是否没有COPY!)
3.特定的ODBC驱动
ASA在 Sybase\Adaptive Server Anywhere 6.0\win32 目录下,
 为 dbeng6.exe,dbsrv6.exe,dbodbc6.dll

888888888888 2003-06-15
  • 打赏
  • 举报
回复
关注
bachelor1001 2003-06-15
  • 打赏
  • 举报
回复
最好确保两台机器上的路径一样,
我以前也遇到了这个问题,但好象有时不一样也行,有人说要路径距根目录的层数一样,其实我现在也还没搞明白,但我知道只要路径一样就一定能行
盼望高手来说说这是为什么?
nodd 2003-06-15
  • 打赏
  • 举报
回复
有这种可能:
你的db 要重新生成一个log文件,
“"C:\Program Files\Sybase\SQL Anywhere 7\win32\dblog.exe ” -n "c:\*.db"
再试一下,
"C:\Program Files\Sybase\SQL Anywhere 7\win32\dbeng7.exe " "c:\*.db" -c 8m
你试下啦

或者确保两台机器的数据库路径设置100%一样包括odbc
yumei 2003-06-15
  • 打赏
  • 举报
回复
重新配置数据源
shanxiit 2003-06-15
  • 打赏
  • 举报
回复
重新配置数据源,找到数据库文件的路经。
jeff_107 2003-06-14
  • 打赏
  • 举报
回复
看完上面的,问题应该能解决了,呵呵
hai_yu2000 2003-06-14
  • 打赏
  • 举报
回复
把日至文件删了
joss 2003-06-14
  • 打赏
  • 举报
回复
1、检查ODBC设置是否正确
2、相应的DLL文件和INI文件是否齐全!
linleming 2003-06-14
  • 打赏
  • 举报
回复
是不是odbc配置的问题,看看下面的文章可能对你有帮助!!!

在PB中用代码配置ODBC

  在编写PB(PowerBuild)的Windows应用程序中,常常涉及到数据库的配置,特别是网络数据库的配置,通常基于网络的应用程序发行需要手工设置ODBC。本文介绍一种代码配置的方法可以免去在进行单机或网络数据库应用程序时进行手工配置ODBC的烦琐。PowerBuilder是功能强大的客户端开发工具,它的优势在于数据库应用程序的开发,所以绝大部分应用必须与数据库管理系统配合起来才能运行。OBDC是一种编程接口,它能使应用程序访问以结构化查询语言(SQL)作为数据访问标准的数据库管理系统。PB与数据库的连接可以通过ODBC接口实现,在ODBC中配置好数据源后,便可在程序代码中连接数据库并对数据库进行各种操作了。配置ODBC的方法主要有三种:手工配置、代码自动配置和通过安装程序(如InstallShield等专业安装程序)自动配置。大部分PB资料对手工配置ODBC均作了介绍,在这里主要介绍在代码中进行ODBC的配置的方法。第三种方法可以参考InstallShield等软件的使用说明。

  原 理

  Windows中所有的ODBC数据源在系统注册表中都有记载,因此只要编写相应的代码对注册表中的项目进行相应的修改即可。Windows中与ODBC相关的键,主要有下面几项:

  HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBCDRIVER 记录所有已安装的ODBC驱动程序;

  HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI 记录各种ODBC驱动程序的相关信息;

  HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources 记录各种数据源的类型;

  HKEY_CURRENT_USER\Software\ODBC\ODBC.INI 记录各种数据源的详细信息。

  只要打开Windows 95(Windows 98、Windows NT4或Windows 2000)菜单“开始”,然后单击“运行”,输入Regedit运行注册表程序,在注册表中选择左边的树结构,查找上述相应的选项,就可以看到其中的详细信息。

  我们只要在代码中对这些键进行配置,便可达到配置ODBC的目的。

  实 现

  下面以PowerBuilder 7.0 内置的Sybase SQL Anywhere 6.0数据库为例介绍ODBC的代码配置方法。

  1、打开注册表,找到数据库驱动程序及相关文件

  首先找到相应的数据库驱动程序,这些文件可以在注册表的HKEY_LOCAL_MACHINE\Software

  \ODBC\ODBCINST.INI下相应键中找到。如Sybase SQL Anywhere 6.0为dbeng60.exe,Wod60t.dll,以及一些其他相关的动态链接库,此例中为Dbl60t.dll、Wl60ent.dll、Wtr60t.dll、Wodbc.gid和Wtr60t.dll。这些文件必须与最终的可执行程序一起安装到用户的计算机上。它们可以与应用程序放在一起,也可以放在一个特定的目录下(本例为Windows 98的System目录下)。在调试时可先将这些文件复制到指定的目录下。

  2、在应用程序中用PB脚本代码配置ODBC

  在应用的Open事件中对ODBC配置的脚本代码如下:

  Ulong ul_num;

  Int li_sysdir,li_dir1,li_dir2,li_dir3,li_dir4,li_dir5,li_app;

  String ls_driver,ls_start,ls_location,ls_apppath,ls_dbpath,ls_odbcstr;

  //获取操作系统的system目录,并保存到ls_location变量

  li_sysdir = RegistryGet(″KYEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup″,″SysDir″,RegString!ls_location);

  IF li_sysdir = -1 THEN

  Messagebox(′错误′,′应用程序无法获取Windows的系统目录,系统将终止运行!′,Stopsign!);

  RETURN;

  END IF

  //判断Sybase SQL Anywhere6.0的驱动程序是否正确安装

  ls_driver = ls_location+′\WOD60T.DLL′

  ls_start = ls_location+′\dbeng60.EXE′

  IF NOT (FileExists(ls_driver) AND FileExists(ls_start)) THEN

  Messagebox(′错误′,′系统中没有安装SQL Anywhere 6.0的驱动程序,系统将终止运行!′,StopSign!);

  RETURN;

  END IF

  //设置ODBC\ODBCINST.INI\ODBC DRIVERS

  li_sysdir=RegistrySet(′HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBCDRIVER′,′Sybase SQL Anywhere 6.0′,RegString!,′Installed′);

  IF li_sysdir = -1 THEN

  Messagebox(′错误′,′应用程序无法设置ODBC DRIVERS,系统将终止运行!′,StopSign!);

  RETURN;

  END IF

  //设置ODBC\ODBCINST.INI

  li_dir1=RegistrySet(′HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Sybase SQL Anywhere 6.0′,′CPTimeout′,RegString!,′not pooled′)

  li_dir2=RegistrySet(′HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Sybase SQL Anywhere 6.0′,′Driver′,RegString!,ls_driver)

  li_dir3=RegistrySet(′HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\Sybase SQL Anywhere 6.0′,′Setup′,RegString!,ls_driver)

  IF li_dir1=-1 OR li_dir2=-1 OR li_dir3=-1 THEN

  Messagebox(′错误′,′应用程序无法设置ODBCINST.INI,系统将终止运行!′,StopSign!);

  RETURN;

  END IF

  //设置ODBC DATA SOURCE(MyDataSource为数据源名)

  li_sysdir=RegistrySet(′HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBC Data Sources′,′MyDataSource′,RegString!,′Sybase SQL Anywhere 6.0′);

  IF li_sysdir=-1 THEN

  Messagebox(′错误′,′应用程序无法设置ODBC DATA SOURCE,系统将终止运行!′,StopSign!);

  RETURN;

  END IF

  //获取应用程序的安装路径(MyApp为应用程序安装到用户计算机上后在注册表中注册的应用程序名,MyDatabase.db为应用程序的数据库名,与应用程序在同一目录下,MyDataSource为数据源名)

  li_app=RegistryGet(″KYEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\MyApp″,″Path″,RegString!ls_apppath)

  IF li_app=-1 THEN

  Messagebox(′错误′,′应用程序无法获取程序安装路径名,系统将终止运行!′,StopSign!);

  RETURN

  ELSE

  ls_dbpath=ls_apppath+′MyDatabase.db′;

  END IF

  //设置ODBC.INI

  li_dir1=RegistrySet(′HKEY_current_user\software\odbc\odbc.ini\MyDataSource′,′driver′,RegString!,ls_driver);

  li_dir2=RegistrySet(′HKEY_current_user\software\odbc\odbc.ini\MyDataSource′,′start′,RegString!,ls_start);

  li_dir3=RegistrySet(′HKEY_current_user\software\odbc\odbc.ini\MyDataSource′,′autostop′,RegString!,′yes′);

  li_dir4=RegistrySet(′HKEY_current_user\software\odbc\odbc.ini\MyDataSource′,′DataBaseFile′,RegString!,ls_db_path);

  li_dir5=RegistrySet(′HKEY_current_user\software\odbc\odbc.ini\MyDataSource′,′DataBaseName′,RegString!,′MyDatabase′);

  IF li_dir1=-1 OR li_dir2=-1 OR li_dir3=-1 OR li_dir4=-1 OR li_dir5=-1 THEN

  Messagebox(′错误′,′应用程序无法设置ODBC.INI,系统将终止运行!′,StopSign!);

  RETURN

  END IF

  ls_odbcstr=′dsn=MyDataSource;databasename=MyDatabase;databasefile=′+ls_dbpath;

  sqlca.dbms=′odbc′;

  sqlca.databse=′MyDatabase′;

  sqlca.dbparm=″connectstring=′ ″+ls_odbcstr+″;uid=dba;pwd=sql′ ″;

  connect using sqlca;

  open(w_frame);

  该程序在Windows 98 中用PowerBuilder 7.0 调试通过。


topsun 2003-06-14
  • 打赏
  • 举报
回复
从新odbc连接,把profile从写到应用脚本一遍
kakugigo 2003-06-14
  • 打赏
  • 举报
回复
先安装ASA,然后配置数据源
或者在程序启动是修改注册表
yzc 2003-06-14
  • 打赏
  • 举报
回复
我认为是你的日志.log文件的问题,
liaolwj 2003-06-14
  • 打赏
  • 举报
回复
你配置了数据源没有,在控制面板里
如果实在不行安装一下ASA就可以了
kexinlily 2003-06-14
  • 打赏
  • 举报
回复
我在别的机器上建立了ODBC连接
但是没有找不到数据源呀
落日的方法是不是太麻烦了点呀?
有的人说是随机性的问题
如果这样,那岂不是都不能保证不能移动了
joincsdn 2003-06-14
  • 打赏
  • 举报
回复
同意楼上linleming(落日) 的说法
cool18_2k 2003-06-14
  • 打赏
  • 举报
回复
asa是用odbc方式连接的。
你是否在那台电脑的系统中建立了asa数据库的odbc连接呢?
看你的“找不到数据源”的问题,应该是这个原因。
kexinlily 2003-06-14
  • 打赏
  • 举报
回复
还是不太明白呀
说得都这么复杂
有没有更好一些的办法呀
我把所有东西都拷过去了呀

754

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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