社区
数据库
帖子详情
如何用VC++访问SQLserver数据库?
zhucunwang2008
2008-11-04 12:34:16
如何用VC++访问SQLserver数据库?
...全文
430
17
打赏
收藏
如何用VC++访问SQLserver数据库?
如何用VC++访问SQLserver数据库?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
youhao1999
2009-01-19
打赏
举报
回复
ADO技术,和vc连接其它数据库类似
图书馆找本书或摆渡一下就有答案
ooily
2008-12-25
打赏
举报
回复
不懂,up
lgy_come_on
2008-12-25
打赏
举报
回复
比如这个例子:
新建连接类如下(类名:ADOConn)
// ADOConn.cpp: implementation of the ADOConn class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "CheckManage.h"
#include "ADOConn.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
ADOConn::ADOConn()
{
}
ADOConn::~ADOConn()
{
}
// 初始化—连接数据库
void ADOConn::OnInitADOConn()
{
// 初始化OLE/COM库环境
::CoInitialize(NULL);
try
{
// 创建Connection对象
m_pConnection.CreateInstance("ADODB.Connection");
// 设置连接字符串,必须是BSTR型或者_bstr_t类型
_bstr_t strConnect = "Provider=SQLOLEDB.1; Server=127.0.0.1; Database=CheckManage; uid=sa; Trusted_Connection=Yes";
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
// 捕捉异常
catch(_com_error e)
{
// 显示错误信息
AfxMessageBox(e.Description());
}
}
// 执行查询
_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
// 连接数据库,如果Connection对象为空,则重新连接数据库
if(m_pConnection==NULL)
OnInitADOConn();
// 创建记录集对象
m_pRecordset.CreateInstance(__uuidof(Recordset));
// 取得表中的记录
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
// 捕捉异常
catch(_com_error e)
{
// 显示错误信息
AfxMessageBox(e.Description());
}
// 返回记录集
return m_pRecordset;
}
// 执行SQL语句,Insert Update _variant_t
BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
// _variant_t RecordsAffected;
try
{
// 是否已经连接数据库
if(m_pConnection == NULL)
OnInitADOConn();
// Connection对象的Execute方法:(_bstr_t CommandText,
// VARIANT * RecordsAffected, long Options )
// 其中CommandText是命令字串,通常是SQL命令。
// 参数RecordsAffected是操作完成后所影响的行数,
// 参数Options表示CommandText的类型:adCmdText-文本命令;adCmdTable-表名
// adCmdProc-存储过程;adCmdUnknown-未知
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return true;
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
return false;
}
}
// 断开连接
void ADOConn::ExitConnect()
{
// 关闭记录集和连接
if (m_pRecordset != NULL)
m_pRecordset->Close();
m_pConnection->Close();
// 释放环境
::CoUninitialize();
}
再在ADOConn.h的头文件中加
#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF")
并声明一下东西:
// 定义变量
public:
//添加一个指向Connection对象的指针:
_ConnectionPtr m_pConnection;
//添加一个指向Recordset对象的指针:
_RecordsetPtr m_pRecordset;
// 定义方法
public:
ADOConn();
virtual ~ADOConn();
void OnInitADOConn(); // 初始化—连接数据库
_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL); // 执行查询
BOOL ExecuteSQL(_bstr_t bstrSQL); // 执行SQL语句,Insert Update _variant_t
void ExitConnect(); // 断开连接
lgy_come_on
2008-12-25
打赏
举报
回复
ado,dao,odbc等 等 都可用 ,不过本人喜欢用ado,简单不难
zfbj
2008-11-17
打赏
举报
回复
严重支持用ADO,下面的代码是一段访问Access的代码,修改一下连接字符串就可以访问Sql Server:
// 初始化COM动态链接库
::CoInitialize(NULL);
// 创建ADO连接对象和记录集对象
_ConnectionPtr pConnection = NULL;
_RecordsetPtr pRecordset = NULL;
pConnection.CreateInstance(__uuidof(Connection));
pRecordset.CreateInstance(__uuidof(Recordset));
// 获得当前应用程序的路径
TCHAR szFileName[MAX_PATH];
::GetModuleFileName(AfxGetInstanceHandle(), szFileName, MAX_PATH);
CString strPath = szFileName;
strPath = strPath.Left(strPath.ReverseFind(TEXT('\\')) + 1); // 包含'\'字符
try
{
// 打开本地的Access数据库
CString strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strPath + "test.mdb";
pConnection->Open(strConnection.GetBuffer(200), "", "", adModeUnknown);
strConnection.ReleaseBuffer();
// 访问Student表中所有的记录,并输出到屏幕上
pRecordset->Open("Select * From Student Where [Age] > 19", pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);
pRecordset->MoveFirst();
while (pRecordset->EndOfFile == VARIANT_FALSE)
{
// 第一个字段
COleVariant vaHolder = pRecordset->GetCollect("Name");
if (vaHolder.vt != VT_NULL)
{
CString strName = (LPCWSTR)_bstr_t(vaHolder);
cout << strName.GetBuffer(50) << ", ";
strName.ReleaseBuffer();
}
vaHolder.Clear();
// 第二个字段
vaHolder = pRecordset->GetCollect("Age");
if (vaHolder.vt != VT_NULL)
{
int age = (int)vaHolder.intVal;
cout << age << endl;
}
vaHolder.Clear();
pRecordset->MoveNext();
}
pRecordset->Close();
}
catch (_com_error e)
{
AfxMessageBox(e.ErrorMessage());
}
// 关闭记录集和连接对象
if (pRecordset->State)
pRecordset->Close();
if (pConnection->State)
pConnection->Close();
// 关闭COM库的支持
::CoUninitialize();
vcdata
2008-11-17
打赏
举报
回复
买书 名为 VISUAL C++数据库编程技术与事例 不错
yangsen2016
2008-11-14
打赏
举报
回复
一般用ADO
mrnian2008
2008-11-12
打赏
举报
回复
ado接口
http://hi.baidu.com/flly1/blog/item/98819ed1aad902d7572c8418.html
http://www.cnblogs.com/cy163/archive/2007/03/29/693369.html
看完上面两篇文章应该就没问题了
一篇理论,一篇例程
ypine
2008-11-05
打赏
举报
回复
找一个ado封装类
arthurlee
2008-11-04
打赏
举报
回复
1. 可以使用MFC提供的CDatabase、CRecordset等类库;
2. 可以使用ATL提供的CSession、CCommand等类库,基于OLEDB Consumer技术;
dirdirdir3
2008-11-04
打赏
举报
回复
http://www.vckbase.com/document/viewdoc/?id=307
让你望见影子的墙
2008-11-04
打赏
举报
回复
偶一般使用odbc
闪破风浪
2008-11-04
打赏
举报
回复
《ADO开发指南》
内存泄漏
2008-11-04
打赏
举报
回复
参考下面的方法,是连接ACCESS的,如果连接SQL SERVER,把连接字符串修改一下就行了。。
http://www.vckbase.com/document/viewdoc/?id=1215
http://www.vckbase.com/document/viewdoc/?id=610
http://www.vckbase.com/document/viewdoc/?id=496
shakaqrj
2008-11-04
打赏
举报
回复
ado odbc oledb 等等都可以
路人乙2019
2008-11-04
打赏
举报
回复
最好用ADO,简单,不容易出错。
V
C++
访问
SQLServer
数据库
V
C++
访问
SQLServer
数据库
MFC 源码 V
C++
sqlserver
数据库
访问
insert update
MFC 源码 V
C++
sqlserver
数据库
访问
insert update 带界面的
数据库
访问
插入 更新 源码. 属于我给一个系统的升级包,只负责
数据库
内容的更新。
v
c++
中用ODBC
访问
SQL Server
数据库
在v
c++
中用ODBC
访问
SQL Server
数据库
示例
V
C++
实现对远程SQL Server
数据库
的
访问
V
C++
实现对远程SQL Server
数据库
的
访问
V
C++
数据库
使用实例(SQL Server,ADO)
给出两个
数据库
的实例,1:在ADO中调用、执行SQL Server中的存储过程。2:在ADO中使用事务处理
数据库
4,011
社区成员
39,817
社区内容
发帖
与我相关
我的任务
数据库
VC/MFC 数据库
复制链接
扫一扫
分享
社区描述
VC/MFC 数据库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章