我是一个新手,请问VC++怎么样连接SQL SERVER 2005呢?希望可以举个例子~谢谢~ 如题~各位大虾帮下忙吧~本人新手~最好举个例子说明下吧~谢谢~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ADO访问数据库的基本步骤:(1)、引入ADO类 ,加到stdafx.h中#endif // _AFX_NO_AFXCMN_SUPPORT后面 #import "c:\program files\common files\system\ado\msado15.dll" \ no_namespace \ rename ("EOF", "adoEOF") (2)、初始化COM (放在对话框初始化函数里面或者CXXXApp::InitInstance()中) 在MFC中可以用AfxOleInit();非MFC环境中用: CoInitialize(NULL); (3)、包含后就可以用3个智能指针了:_ConnectionPtr、_RecordsetPtr和_CommandPtr (4)、连接数据库HRESULT hr; try { hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象 if(SUCCEEDED(hr)) { m_pConnection->ConnectionTimeout = 0; hr = m_pConnection->Open( "Provider=SQLOLEDB.1;Password=密码;Persist Security Info=True;User ID=用户名;Initial Catalog=数据库名;Data Source=127.0.0.1(本机)", "", "", adConnectUnspecified); m_pCommand.CreateInstance(__uuidof(Command)); m_pCommand->CommandTimeout = 5; m_pCommand->ActiveConnection = m_pConnection; } } catch(_com_error e)///捕捉异常 { CString errormessage; errormessage.Format("连接数据库失败!\r\n错误信息:%s,%s",e.ErrorMessage(),e.Description()); AfxMessageBox(errormessage);///显示错误信息 } (5)、打开记录集首先创建一个_RecordsetPtr实例,然后调用Open()得到一条SQL语句的执行结果 _RecordsetPtr m_pRecordset; m_pRecordset.CreateInstance(__uuidof(Recordset)); // 在ADO操作中建议语句中要常用try...catch()来捕获错误信息, // 因为它有时会经常出现一些意想不到的错误try { m_pRecordset->Open("SELECT * FROM DemoTable",// 查询DemoTable表中所有字段 m_pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针 adOpenDynamic, adLockOptimistic, adCmdText); } catch(_com_error *e) { AfxMessageBox(e->ErrorMessage()); } …… http://download.csdn.net/source/336070 CDatabase db; CString strSql; strSql.Format(TEXT("Driver=SQL Server;Server=%s;Database=%s;UID=%s;PWD=%s"), m_strDbAddress/*数据库服务器IP、域名或主机名*/, m_strDbName/*数据库名称*/, m_strAccount/*帐户名*/, m_strPassword/*数据库密码*/); try { if(0 == db.OpenEx(strSql,CDatabase::noOdbcDialog)) { //error } } catch(CDBException *pe) { pe->ReportError(); pe->Delete(); } http://wenku.baidu.com/view/a9a4446a011ca300a6c3909c.html http://topic.csdn.net/u/20100429/11/a1a68cd2-d942-4f6b-b387-69a130ec5888.html 寻Wbemidl.h及其相关的头文件和lib 关于CListCtrl::DeleteAllItems() 未能实例化ActiveX控件 前几天的面试题目,求比较完美的解答 资源调用问题 高分求解,如何获取显示器的名称。 为什么菜单设置不生效,哪位高手能帮我指点一下 高分求助 DialogBox 的问题 VC里用ODBC打开SQL数据库,怎麽消除登录框? 如何给一个包含文件的目录改名? 求大侠指导:mfc如何在文本编辑框中显示文本内容 请问在VC中如何改变编辑框的背景颜色
#import "c:\program files\common files\system\ado\msado15.dll" \
no_namespace \
rename ("EOF", "adoEOF") (2)、初始化COM (放在对话框初始化函数里面或者CXXXApp::InitInstance()中)
在MFC中可以用AfxOleInit();非MFC环境中用:
CoInitialize(NULL); (3)、包含后就可以用3个智能指针了:_ConnectionPtr、_RecordsetPtr和_CommandPtr (4)、连接数据库
HRESULT hr;
try
{
hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
if(SUCCEEDED(hr))
{
m_pConnection->ConnectionTimeout = 0;
hr = m_pConnection->Open( "Provider=SQLOLEDB.1;Password=密码;Persist Security Info=True;User ID=用户名;Initial Catalog=数据库名;Data Source=127.0.0.1(本机)", "", "", adConnectUnspecified);
m_pCommand.CreateInstance(__uuidof(Command));
m_pCommand->CommandTimeout = 5;
m_pCommand->ActiveConnection = m_pConnection;
}
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s,%s",e.ErrorMessage(),e.Description());
AfxMessageBox(errormessage);///显示错误信息
}
(5)、打开记录集
首先创建一个_RecordsetPtr实例,然后调用Open()得到一条SQL语句的执行结果
_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));
// 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
// 因为它有时会经常出现一些意想不到的错误
try
{
m_pRecordset->Open("SELECT * FROM DemoTable",// 查询DemoTable表中所有字段
m_pConnection.GetInterfacePtr(), // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
} ……
CDatabase db;
CString strSql;
strSql.Format(TEXT("Driver=SQL Server;Server=%s;Database=%s;UID=%s;PWD=%s"),
m_strDbAddress/*数据库服务器IP、域名或主机名*/,
m_strDbName/*数据库名称*/,
m_strAccount/*帐户名*/,
m_strPassword/*数据库密码*/);
try
{
if(0 == db.OpenEx(strSql,CDatabase::noOdbcDialog))
{
//error
}
}
catch(CDBException *pe)
{
pe->ReportError();
pe->Delete();
}