⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_64348.htm

📁 vc
💻 HTM
字号:
<p>
序号:64348 发表者:岚岚 发表日期:2003-12-10 11:33:45
<br>主题:ado链接sql server数据库时出现问题,请高手帮忙!
<br>内容:我用ado访问access数据库时没有任何问题,但是我移植到sql server 2000 时总是在链接数据库时就出错,在网上也搜了很多代码,试了很多次,但总是如此,请哪位帮忙。<BR>代码如下,不知哪儿有错:<BR>//com初始化<BR>if(!AfxOleInit())&nbsp;&nbsp;&nbsp;&nbsp;AfxMessageBox(&#34;OLE 初始化未成功!&#34;);<BR><BR>try{<BR>&nbsp;&nbsp;&nbsp;&nbsp; //创建connection实例<BR>&nbsp;&nbsp;&nbsp;&nbsp; m_pConnection.CreateInstance(__uuidof(Connection));<BR>&nbsp;&nbsp;&nbsp;&nbsp; //打开数据库链接<BR>&nbsp;&nbsp;&nbsp;&nbsp; m_pConnection-&gt;Open((_bstr_t)&#34;Provider=SQLOLEDB;Server=CYY;DATABASE=pubs&#34;,&#34;&#34;,&#34;&#34;,adModeUnknown);<BR>}<BR>catch(_com_error e)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AfxMessageBox(e.ErrorMessage());<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return FALSE;<BR>} <BR><BR>pubs是sql server自带的数据库例子,CYY是sql服务器名字,采用windows登录。<BR>每次在打开(Open)时出现异常,异常信息是“未指定的错误”<BR>请哪位高手帮一下忙,不胜感激!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:wjb 回复日期:2003-12-10 11:46:10
<br>内容:按照下面修改看看<BR>http://www.vchelp.net/cndevforum/subject_view.asp?subject_id=61896&amp;forum_id=
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:岚岚 回复日期:2003-12-10 12:40:48
<br>内容:我很早就已经看过了,但是不行,谢谢你!只是不知道是不是跟提供者有关系
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:wjb 回复日期:2003-12-10 13:34:31
<br>内容:单纯看不行,要比较着写<BR><BR>//另外,如果访问sql server,需要提供登录用户<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:岚岚 回复日期:2003-12-10 18:31:20
<br>内容:wjb兄,谢谢你!<BR>第一种方法,为属性赋值:<BR>CString connect_t;&nbsp;&nbsp;&nbsp;&nbsp;<BR>connect_t.Format(&#34;driver={SQL Server};server=CYY;database=pubs&#34;);<BR>_bstr_t connect=connect_t;<BR>m_pConnection-&gt;ConnectionString=connect;<BR>m_pConnection-&gt;Open(&#34;&#34;,&#34;&#34;,&#34;&#34;,adModeUnknown);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>第二种,进行直接打开:&nbsp;&nbsp;&nbsp;&nbsp;<BR>m_pConnection-&gt;Open(&#34;driver={SQL Sever};Server=CYY;DATABASE=pubs&#34;,&#34;&#34;,&#34;&#34;,adModeUnknown);<BR><BR>wjb兄,你觉得这两种方法有什么区别吗,我是实在看不出哪有区别了。<BR>但是一种方法可行,而另一种则出现c++异常,你猜猜哪种可行?<BR>小弟初学,道行浅薄,看不出其中的端倪,但你是高手,能否给我一个完满的解释?小弟感激不尽!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:wjb 回复日期:2003-12-10 20:34:57
<br>内容:这两种方法是完全一样的。<BR><BR>至于第二种方法不行,是因为驱动名称写错了。<BR>应该是:{SQL Server}<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:岚岚 回复日期:2003-12-11 09:49:53
<br>内容:wjb兄,谢谢你!我在msdn里看了一遍又一遍,总是觉得两者是一样的,但是就是没有发现这个错误,我怎么就看不出来呢?佩服佩服!<BR>我再请教你一个小问题:<BR>我在网上下载了很多例子,虽然讲的都是访问Access数据库,但是都提示了访问SQL Server数据库时的方法,大多数情况下都是以下面方式打开,我想问你这种方法与上面的那种方法有什么不同吗?而且下面这种方式打开时在我这儿是不成功的,总是抛出C++异常,信息为:不确定的错误。我想请教的是:若以下面这种方式打开,应当怎么做?<BR>m_pConnection-&gt;Open(&#34;Provider=sqloledb;Data Source=CYY;Initial Catalog=pubs&#34;,&#34;&#34;,&#34;&#34;,adModeUnknown);<BR>我先说说我的浅见:<BR>要打开数据库,当然要找到数据库所在的地址,但在链接里都没有哪儿直接显示数据库的地址,因此:<BR>(1)前一种方法:先找到服务器,然后找到SQL Server引擎,然后找到数据库名字,然后找到数据库地址;因此这种方法不需要注册数据源,但若不运行SQL服务器,也是无法访问。<BR>(2)后一种方法不太明白,但看起来又很相似,但我想后一种方法是不是要注册数据源,然后才能访问?<BR>请指教?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:wjb 回复日期:2003-12-11 10:28:41
<br>内容:1.前面的方法是套用了ODBC的语法,后面是OLE DB的语法。后者的Data Source对于前者Server。所以后面方法中提供了数据库服务器CYY名称。<BR>2.数据源是ODBC的概念,OLE DB中的概念是提供者Provider和消费者Consumer,提供者对于ODBC中的Driver。<BR><BR>3.访问sql server是需要用户的。sql server有两种验证方式:windows和sql。在ODBC,ADO中两种都支持,但是在ADO中不能自动处理缺省。<BR>在前面的连接方法中,没有提供用户,程序自动使用了你在windows中的登录用户去连接sql server了。但是在后面的ADO连接中没有提供是连接不通的。<BR>所以应该在下面的语句中提供连接用户信息:<BR>m_pConnection-&gt;Open(&#34;Provider=sqloledb;Data Source=CYY;Initial Catalog=pubs&#34;,&#34;&#34;,&#34;&#34;,adModeUnknown);<BR>例如用户sa,口令abc,应该写成:<BR>m_pConnection-&gt;Open(&#34;Provider=sqloledb;Data Source=CYY;Initial Catalog=pubs&#34;,&#34;sa&#34;,&#34;abc&#34;,adModeUnknown);<BR>应该就可以了。<BR><BR>祝顺利解决!<BR><BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:岚岚 回复日期:2003-12-11 10:56:59
<br>内容:谢谢wjb兄!<BR>但是我根本没有设置SQL密码,用的是windows登录,没有采用混合模式,所以我根本就没有用户和密码提供。windows登录采用缺省的Administrator,密码为1234;<BR>我试过这样:<BR>m_pConnection-&gt;Open(&#34;Provider=sqloledb;Data Source=CYY;Initial Catalog=pubs;User Name=Administrator;Password=1234&#34;,&#34;&#34;,&#34;&#34;,adModeUnknown);<BR>也试过这样:<BR>m_pConnection-&gt;Open(&#34;Provider=sqloledb;Data Source=CYY;Initial Catalog=pubs&#34;,&#34;Administrator&#34;,&#34;1234&#34;,adModeUnknown);<BR>还试过这样:<BR>m_pConnection-&gt;Open(&#34;Provider=sqloledb;Data Source=CYY;Initial Catalog=pubs;User Name=Administrator;Password=1234&#34;,&#34;Administrator&#34;,&#34;1234&#34;,adModeUnknown);<BR>但是以上的方法都不行,总是c++异常,信息为:不确定的错误。<BR>你能知道其中的原因吗?<BR>再问一个问题:应用程序要访问SQL Server数据库,必须要SQL Server运行吗?Access好像不需要这样的。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:wjb 回复日期:2003-12-11 13:15:13
<br>内容:俺试验了一下,在ADO中如果使用windows的信息是连接不通的。具体原因俺也不知道了。<BR><BR>Access是基于文件的数据库,是不需要再运行其他程序的。但是SQL Server有数据库服务器,需要运行才可以使用。实际上对于SQL Server数据的访问都是由服务器来处理,将数据返回给用户的。两者的机制是不一样的。<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:岚岚 回复日期:2003-12-11 17:59:34
<br>内容:谢谢老兄!<BR>这么说UserName和Password行同虚设了吗?那我没有设置SQL密码,岂不是不能登录了啊,那可如何是好呢?不知重社一个行不行
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:wjb 回复日期:2003-12-11 20:07:36
<br>内容:选用混合模式,使用sql的用户就可以了。<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:岚岚 回复日期:2003-12-17 08:26:15
<br>内容:谢谢老兄
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:yanzheng 回复日期:2003-12-17 10:45:54
<br>内容:windows验证方式(VC6.O+SQL2000):<BR>Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;<BR>Initial Catalog=pubs;Data Source=CYY
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:岚岚 回复日期:2003-12-18 11:18:17
<br>内容:谢谢yan兄,但是我这个贴的分数都已经给人家了,不过没关系,我还有一个贴没有结贴,你到那里发表一下意见,我给你分啊!也是200分<BR>http://www.vchelp.net/cndevforum/subject_view.asp?subject_id=61076<BR><BR>2003-12-18 11:18:59

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -