求助在《Visual C++ 数据库系统开发完全手册》一书中遇到的问题!
发表在C语言图书答疑
2008-04-28
是否精华
是
否
版块置顶:
是
否
<STRONG><FONT size=4>您好!</FONT></STRONG>
<DIV><FONT size=4> 我是贵公司所编写的图书的读者,现在使用《Visual C++ 数据库系统开发完全手册》一书中遇到了一个问题,想请求您的帮助!</FONT></DIV>
<DIV><FONT size=4> 我在使用该书所提供的系统(所带光盘中的)时,出现在如下问题。</FONT></DIV>
<DIV><FONT size=4> 我使用的是《商品销售管理系统》,我按照本书光盘中的教程的步骤配置了该系统的SQL2000SERVER数据库,分别在不同的机器上运行, 有的可以正常运行(学校机房的windows 2000系统上),而有的机器上是数据库链接失败(在自己的机器上和同学的机器上windows xp系统),在系统登录对话框还没有出现的时候就弹出对话框提示“数据库链接失败,程序异常关闭”(执行了如下代码:</FONT></DIV><FONT size=4>
<DIV>……</DIV>
<DIV> </DIV>
<DIV><FONT color=#0000f0>if(!m_hDatabase.InitData())<BR> {<BR> MessageBox(NULL, "数据库访问失败,程序异常关闭!", "出错啦", MB_OK) ;<BR> exit(1) ;<BR> }</FONT></DIV>
<DIV><FONT color=#0000f0>……</FONT></DIV>
<DIV>)。</DIV>
<DIV>(<FONT size=3>具体出错相关代码如下面附加内容所示。)</FONT></DIV>
<DIV><FONT size=3> 我设置断点调试的时候在调试窗口中显示的是“服务器不存在或无权访问数据库”!</FONT></DIV></FONT>
<DIV><FONT size=4> 开始,我想到可能是不支持windows xp 系统,但是我想到去年我在windows xp上运行过,正确过!好象是在按照光盘中教程所讲的配置外,还另外配置了SQL中的一个地方,但是我现在怎么也想不起来是怎么配置了。在这些运行的机器上,我对数据库是同样的配置!为什么就有的不能用而有的又可以用呢?我想请您帮助我分析一下这是怎么回事!(我使用《学生信息管理系统》很正常,哪都可以用.)</FONT></DIV>
<DIV><FONT size=4> 谢谢!</FONT></DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV>附:出错地方代码(红色标记的地方打开数据库失败,从而执行了蓝色代码)</DIV>
<DIV> </DIV>
<DIV>int CDatabase::InitData()<BR>{<BR> char m_szConnect[512];<BR> char m_szTmp[1024]="" ;<BR> char m_szHost[20], m_szUser[20], m_szPwd[20], m_szDef[20] ;<BR> GetPrivateProfileString("数据库", "主机名", NULL, m_szHost, sizeof(m_szHost), IniFile) ;<BR> GetPrivateProfileString("数据库", "用户名", NULL, m_szUser, sizeof(m_szUser), IniFile) ;<BR> GetPrivateProfileString("数据库", "密码", NULL, m_szPwd, sizeof(m_szPwd), IniFile) ;<BR> GetPrivateProfileString("数据库", "默认库", NULL, m_szDef, sizeof(m_szDef), IniFile) ;<BR> try<BR> {<BR> //连接XdData<BR> HRESULT hr = m_Connection.CreateInstance(__uuidof(Connection));<BR> sprintf(m_szConnect,"provider = sqloledb;server=%s;database=%s;", m_szHost, m_szDef);<BR> <FONT color=#f00000>hr=m_Connection->Open(_bstr_t(m_szConnect),_bstr_t(m_szUser),_bstr_t(m_szPwd),-1);<BR></FONT> sprintf(m_szTmp, "数据库连接成功!");<BR> //连接XdData<BR> }<BR> catch(_com_error & e) <BR> {<BR> sprintf(m_szTmp, "数据库打开失败,错误原因:%s\n",LPCTSTR(e.Description()));<BR> return 0 ;<BR> }<BR> return 1 ;<BR>}</DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV>……</DIV>
<DIV> </DIV>
<DIV><FONT color=#0000f0>if(!m_hDatabase.InitData())<BR> {<BR> MessageBox(NULL, "数据库访问失败,程序异常关闭!", "出错啦", MB_OK) ;<BR> exit(1) ;<BR> }</FONT></DIV>
<DIV><FONT color=#0000f0>……</FONT></DIV>
<DIV> </DIV>
<DIV><FONT size=4> 我是贵公司所编写的图书的读者,现在使用《Visual C++ 数据库系统开发完全手册》一书中遇到了一个问题,想请求您的帮助!</FONT></DIV>
<DIV><FONT size=4> 我在使用该书所提供的系统(所带光盘中的)时,出现在如下问题。</FONT></DIV>
<DIV><FONT size=4> 我使用的是《商品销售管理系统》,我按照本书光盘中的教程的步骤配置了该系统的SQL2000SERVER数据库,分别在不同的机器上运行, 有的可以正常运行(学校机房的windows 2000系统上),而有的机器上是数据库链接失败(在自己的机器上和同学的机器上windows xp系统),在系统登录对话框还没有出现的时候就弹出对话框提示“数据库链接失败,程序异常关闭”(执行了如下代码:</FONT></DIV><FONT size=4>
<DIV>……</DIV>
<DIV> </DIV>
<DIV><FONT color=#0000f0>if(!m_hDatabase.InitData())<BR> {<BR> MessageBox(NULL, "数据库访问失败,程序异常关闭!", "出错啦", MB_OK) ;<BR> exit(1) ;<BR> }</FONT></DIV>
<DIV><FONT color=#0000f0>……</FONT></DIV>
<DIV>)。</DIV>
<DIV>(<FONT size=3>具体出错相关代码如下面附加内容所示。)</FONT></DIV>
<DIV><FONT size=3> 我设置断点调试的时候在调试窗口中显示的是“服务器不存在或无权访问数据库”!</FONT></DIV></FONT>
<DIV><FONT size=4> 开始,我想到可能是不支持windows xp 系统,但是我想到去年我在windows xp上运行过,正确过!好象是在按照光盘中教程所讲的配置外,还另外配置了SQL中的一个地方,但是我现在怎么也想不起来是怎么配置了。在这些运行的机器上,我对数据库是同样的配置!为什么就有的不能用而有的又可以用呢?我想请您帮助我分析一下这是怎么回事!(我使用《学生信息管理系统》很正常,哪都可以用.)</FONT></DIV>
<DIV><FONT size=4> 谢谢!</FONT></DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV>附:出错地方代码(红色标记的地方打开数据库失败,从而执行了蓝色代码)</DIV>
<DIV> </DIV>
<DIV>int CDatabase::InitData()<BR>{<BR> char m_szConnect[512];<BR> char m_szTmp[1024]="" ;<BR> char m_szHost[20], m_szUser[20], m_szPwd[20], m_szDef[20] ;<BR> GetPrivateProfileString("数据库", "主机名", NULL, m_szHost, sizeof(m_szHost), IniFile) ;<BR> GetPrivateProfileString("数据库", "用户名", NULL, m_szUser, sizeof(m_szUser), IniFile) ;<BR> GetPrivateProfileString("数据库", "密码", NULL, m_szPwd, sizeof(m_szPwd), IniFile) ;<BR> GetPrivateProfileString("数据库", "默认库", NULL, m_szDef, sizeof(m_szDef), IniFile) ;<BR> try<BR> {<BR> //连接XdData<BR> HRESULT hr = m_Connection.CreateInstance(__uuidof(Connection));<BR> sprintf(m_szConnect,"provider = sqloledb;server=%s;database=%s;", m_szHost, m_szDef);<BR> <FONT color=#f00000>hr=m_Connection->Open(_bstr_t(m_szConnect),_bstr_t(m_szUser),_bstr_t(m_szPwd),-1);<BR></FONT> sprintf(m_szTmp, "数据库连接成功!");<BR> //连接XdData<BR> }<BR> catch(_com_error & e) <BR> {<BR> sprintf(m_szTmp, "数据库打开失败,错误原因:%s\n",LPCTSTR(e.Description()));<BR> return 0 ;<BR> }<BR> return 1 ;<BR>}</DIV>
<DIV> </DIV>
<DIV> </DIV>
<DIV>……</DIV>
<DIV> </DIV>
<DIV><FONT color=#0000f0>if(!m_hDatabase.InitData())<BR> {<BR> MessageBox(NULL, "数据库访问失败,程序异常关闭!", "出错啦", MB_OK) ;<BR> exit(1) ;<BR> }</FONT></DIV>
<DIV><FONT color=#0000f0>……</FONT></DIV>
<DIV> </DIV>