精华内容
下载资源
问答
  • ADO 连接数据库 C++ VC

    2010-01-31 16:48:48
    ADO 连接数据库 C++ VC ADO 连接数据库 C++ VC ADO 连接数据库 C++ VC ADO 连接数据库 C++ VC ADO 连接数据库 C++ VC
  • VCADO访问数据库

    2018-05-03 22:56:31
    VCADO访问数据库全攻略
  • VC 6.0 ADO 连接数据库完整程序

    热门讨论 2010-07-28 11:07:16
    VC 6.0 ADO 连接数据库完整程序 VC 6.0 ADO 连接数据库完整程序 VC 6.0 ADO 连接数据库完整程序 VC 6.0 ADO 连接数据库完整程序 VC 6.0 ADO 连接数据库完整程序
  • VC调用ADO处理数据库

    2016-03-11 15:20:04
    VC调用ado处理数据库,进行增删查改
  • vc ado操作数据库实例

    2012-05-04 11:00:29
    vc ado操作数据库实例,可存储图片.添加和删除记录.代码和数据库完整
  • VCADO访问数据库全攻略 VCADO访问数据库全攻略 VCADO访问数据库全攻略
  • VC ++ ADO 操作数据库

    2013-04-17 10:07:13
    VC ADO 操作数据库 使用ADO连接数据库 实现了基本的连接和操作
  • VC 通过 ADO访问数据库好例子
  • 使用VC或VB结合ADO连接数据库的方法,实现一个数据库应用系统,具体的选题不限,但要求至少实现以下基本功能: 1. 插入和删除 2. 和本数据库应用系统相关的查询(举例来说,如设计的是进销存管理系统,则要提供...
  • VC采用ADO操作数据库

    2014-08-22 15:12:21
    采用ADO操作数据库,注意读取数据库的字符串和读取十六进制的方式不一样
  • ADO连接数据库VC代码

    2009-03-05 16:50:57
    VCADO连接数据库一段可用代码。方便
  • VC6.0 ADO连接数据库代码,具体连接数据库代码,access数据库
  • VCADO操作数据库示例 源码 vc vc
  • vc ado 数据库

    2012-10-19 15:05:21
    VCADO访问数据库全攻略,介绍了VCADO来访问数据库的各个对象及各方法,很经典,也很实用,很值得一看。
  • VC中使用ADO操作数据库VC中使用ADO操作数据库
  • 主要介绍了VC中使用ADO开发数据库应用程序的方法,结合实例形式详细讲述了ADO的原理及VC使用ADO开发数据库应用程序的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • 使用VCADO进行数据库编程 使用VCADO进行数据库编程
  • VCADO操作数据库.rar

    2008-11-21 16:04:19
    VCADO操作数据库实例。VCADO操作数据库实例。
  • VC ADO连接数据库实例

    2010-09-20 11:39:00
    使用ADO连接数据库,说明及操作很清楚。有问题可留言...
  • VC封装ADO访问数据库的代码实例。可以直接运行,支持MFC技术。
  • VC 中使用ADO访问数据库前言封装ADO的类使用CAdo的例子查询增常用的ADO数据库连接串Access数据库(xxx.mdb)Oracle数据库 前言 ADO (ActiveX Data Objects,ActiveX数据对象)是Microsoft提出的应用程序接口(API)...

    前言

    ADO (ActiveX Data Objects,ActiveX数据对象)是Microsoft提出的应用程序接口(API)用以实现访问关系或非关系数据库中的数据。

    封装ADO的类

    使用msado15.dll
    首先在 在stdafx.h中添加

    #import "c:\\program files\\common files\\system\\ado\\msado15.dll"  \
        no_namespace rename("EOF", "adoEOF") rename("BOF", "adoBOF")
    

    CAdo类

    #ifndef __CADO_H_H
    #define __CADO_H_H
    
    class CAdo
    {
    private:
    	_ConnectionPtr m_pConnection;					//连接对象指针
    public:
    	_RecordsetPtr  m_pRecordset;					//记录集对象指针
    
    
    public:
    	CAdo(void){ m_pConnection = NULL; m_pRecordset = NULL; }
    	~CAdo(void){}
    	void InitADOConn();	//连接数据库
    	void UnInitADOConn();//关闭记录集,断开与数据库连接
    	_RecordsetPtr&  OpenRecordset(const CString& sql);		//打开记录集
    	void UpdateDB(const CString& sql);
    
    	UINT GetRecordCount(_RecordsetPtr pRecordset);	//获得记录数
    };
    
    inline void CAdo::InitADOConn()
    {
    	::CoInitialize(NULL);
    	try
    	{
    		m_pConnection.CreateInstance("ADODB.Connection");  //创建连接对象实例,//Or m_pConnection.CreateInstance(_uuidof(Connection));
    		_bstr_t strConnect = "DRIVER={Microsoft Access Driver (*.mdb)};uid=;pwd=;DBQ=DataBase2.mdb;";
    		//strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DataBase2.mdb;Persist Security Info=False;Jet OLEDB:Database Password=123456";
    		m_pConnection->Open(strConnect, "", "", adModeUnknown); //打开数据库
    		m_pRecordset .CreateInstance(__uuidof(Recordset));// 创建记录集对象实例或者 m_pRecordset .CreateInstance("ADODB.Recordset");
    	}
    	catch (_com_error e)
    	{
    		AfxMessageBox(e.Description()); //弹出错误处理
    	}
    }
    
    // 查询DB,例如:select * from ...
    inline _RecordsetPtr&  CAdo::OpenRecordset(const CString& sql)
    {
    	ASSERT(!sql.IsEmpty());		//SQL语句不能为空
    	try
    	{
    		if (adStateOpen == m_pRecordset->State)
    			m_pRecordset->Close();
    		m_pRecordset->Open(_bstr_t(sql), m_pConnection.GetInterfacePtr(),
    			adOpenDynamic, adLockOptimistic, adCmdText); 	//执行SQL得到记录集
    	}
    	catch (_com_error e) //捕获可能的异常
    	{
    		AfxMessageBox(e.Description());
    	}
    	return m_pRecordset;
    }
    
    // 更新DB,例如:update t_user set ... 或者 INSERT INTO 或者 delete from
    inline void CAdo::UpdateDB(const CString& sql)
    {
    	ASSERT(!sql.IsEmpty());										//SQL语句不能为空
    	try
    	{
    		m_pConnection->Execute((_bstr_t)sql, NULL, adCmdText);
    	}
    	catch (_com_error e)											//捕获可能的异常
    	{
    		AfxMessageBox(e.Description());
    	}
    	return;
    }
    
    inline
    void CAdo::UnInitADOConn()
    {
    	if (m_pRecordset != NULL && m_pRecordset->GetState() == adStateOpen //判断当前的记录集状态
    		m_pRecordset->Close();					//关闭记录集
    	if (m_pConnection)
    		m_pConnection->Close();	//关闭数据库连接
    	::CoUninitialize();			//释放COM环境
    }
    
    
    
    inline
    UINT CAdo::GetRecordCount(_RecordsetPtr pRecordset)
    {
    	int nCount = 0;											//声明保存记录数的变量
    	try{
    		pRecordset->MoveFirst();								//将记录集指针移动到第一条记录
    	}
    	catch (...)												//捕捉可能出现的错误
    	{
    		return 0;											//产生错误时返回0
    	}
    	if (pRecordset->adoEOF)									//判断记录集中是否没有记录
    		return 0;											//无记录时返回0
    	while (!pRecordset->adoEOF)								//当记录集指针没有指向最后时
    	{
    		pRecordset->MoveNext();								//将记录集指针移动到下一条记录
    		nCount = nCount + 1;								//记录个数的变量加1
    	}
    	pRecordset->MoveFirst();									//将记录集指针移动到第一条记录
    	return nCount;											//返回记录数
    }
    
    #endif //__CADO_H_H
    

    使用CAdo的例子

    查询

    CAdo ado;
    ado.InitADOConn();
    //查询
    CString sql = "select * from employees";
    ado.m_pRecordset = ado.OpenRecordset(sql);
    try
    {
    	while(!ado.m_pRecordset->adoEOF)
    	{
    		_variant_t var = ado.m_pRs->GetCollect((_bstr_t)"name");
    		var = ado.m_pRs->GetCollect("编号");
    		var = ado.m_pRs->GetCollect((_bstr_t)"pwd");
    		ado.m_pRs->MoveNext();
    	}
    	
    }
    catch(...)
    {
    	MessageBox("操作失败");
    	return;
    }
    MessageBox("成功");
    ado.UnInitADOConn();
    

    CAdo ado;
    ado.InitADOConn();
    //增删改
    CString sql = "insert into employees...";
    ado.UpdateDB(sql);
    ado.UnInitADOConn();
    

    或者

    	//ADO ado;
    	//ado.OnInitADOConn();
    	//CString sql = "select * from employees";
    	//ado.m_pRecordset = ado.OpenRecordset(sql);
    	//try
    	//{
    	//	ado.m_pRecordset->AddNew(); //添加新行
    	//	ado.m_pRecordset->PutCollect("编号",(_bstr_t)m_ID);
    	//	ado.m_pRecordset->PutCollect("姓名",(_bstr_t)m_Name);
    	//	ado.m_pRecordset->PutCollect("学历",(_bstr_t)m_Culture);
    	//	ado.m_pRecordset->Update(); //更新数据表记录
    	//	ado.CloseRecordset();
    	//	ado.CloseConn();
    	//}
    	//catch(...)
    	//{
    	//	MessageBox("操作失败");
    	//	return;
    	//}
    	//MessageBox("添加成功");
    	//m_Grid.DeleteAllItems(); //删除列表控件
    	//AddToGrid();	
    
    

    ADO ado;
    ado.OnInitADOConn();
    CString sql = "select * from employees";
    ado.m_pRecordset = ado.OpenRecordset(sql);
    try
    {
    	ado.m_pRecordset->Move((long)pos,vtMissing);
    	ado.m_pRecordset->PutCollect("编号",(_bstr_t)m_ID);
    	ado.m_pRecordset->PutCollect("姓名",(_bstr_t)m_Name);
    	ado.m_pRecordset->PutCollect("学历",(_bstr_t)m_Culture);
    	ado.m_pRecordset->Update();
    	ado.CloseRecordset();
    	ado.CloseConn();
    }
    catch(...)
    {
    	MessageBox("操作失败");
    	return;
    }
    MessageBox("修改成功");
    

    常用的ADO数据库连接串

    Access数据库(xxx.mdb)

    // .mdb数据库,没有数据库密码的连接串
    		_bstr_t strConnect = "DRIVER={Microsoft Access Driver (*.mdb)};uid=;pwd=;DBQ=DataBase2.mdb;";
    		//或者
    		strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DataBase2.mdb;Persist Security Info=False;";
    
    // .mdb数据库,有数据库密码的连接串
    	_bstr_t strConnect = "DRIVER={Microsoft Access Driver (*.mdb)};uid=;pwd=123456;DBQ=DataBase2.mdb;";
    	//或者
    	strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=DataBase2.mdb;Persist Security Info=False;Jet OLEDB:Database Password=123456";
    

    Oracle数据库

    使用Oracle客户端(32位)的提供的Driver

    strConnect = "Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=xili;Data Source=127.0.0.1:1521/myorcl"
    
    "Provider=OraOLEDB.Oracle.1;Persist Security Info=True;User ID=xili;Password=xili;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=myorcl)));"
    
    [oledb]
    ; Everything after this line is an OLE DB initstring
    Provider=OraOLEDB.Oracle.1;Password=xili;Persist Security Info=True;User ID=xili;Data Source=127.0.0.1:1521/myorcl
    
    
    

    Persist Security Info属性的意思是表示是否保存安全信息,其实可以简单的理解为"ADO在数据库连接成功后是否保存密码信息",True表示保存,False表示不保存
    源自:https://www.cnblogs.com/zhangchenliang/archive/2012/09/21/2696725.html

    展开全文
  • VCADO连接数据库

    2013-07-25 11:47:44
    VC6.0下通过ADO技术连接ACCESS数据库数据库需要自己建立。
  • VC6 使用ADO数据库中修改记录,是一个简单ado实例,用于ado功能测试
  • VC ado连接数据库

    千次阅读 2012-05-04 14:38:56
    ADO(ActiveX Data Object)是Microsoft数据库应用程序开发的新接口,是建立在OLE DB之上的高层数据库访问技术,即使你对OLE DB,COM不了解也能轻松对付ADO,因为它非常简单易用,甚至比你以往所接触的ODBC API、DAO、...

    ADO(ActiveX Data Object)是Microsoft数据库应用程序开发的新接口,是建立在OLE DB之上的高层数据库访问技术,即使你对OLE DB,COM不了解也能轻松对付ADO,因为它非常简单易用,甚至比你以往所接触的ODBC API、DAO、RDO都要容易使用,并不失灵活性。

    下面我将讲一下怎么连接数据库

    ADO连接数据库分为四步

    (1)初始化COM库,引入ADO库定义文件


    (2)用Connection对象连接数据库


    (3)利用建立好的连接,通过Connection、Command对象执行SQL命令,或利用Recordset对象取得结果记录集进行查询、处理。


    (4)使用完毕后关闭连接释放对象。


    下面我们来演示一下


    在第一步之前需要在stdafx.h里面添加

    添加一个EDIT控件  属性设置一下

    再添加一个静态文本控件


    在消息映射里面设置m_idet

    #import "c:\program files\common files\system\ado\msado15.dll"no_namespace rename("EOF","adoEOF")

    然后定义下面变量Connection对象和Recordset的指针

        _ConnectionPtr m_con;
        _RecordsetPtr m_rec;

    第一步:初始化

    在使用前   初始化

    ::CoInitialize(NULL);

    结束时添加

    ::CoUninitialize();


    第二步:连接数据库

        HRESULT hr;
        try
        {
            hr = m_con.CreateInstance("ADODB.Connection");
            if (SUCCEEDED(hr))
            {
                hr = m_con->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=03104.mdb","","",adModeUnknown);
                ((CStatic *)GetDlgItem(IDC_STATIC1))->SetWindowText("连接数据库成功!");
            }    
        }
        catch (_com_error e)
        {
            CString mes;
            mes.Format("连接数据库失败!\r\r\n 信息错误:%s",e.ErrorMessage());
            MessageBox(mes);
        }

    HRESULT Connection15::Open ( _bstr_t ConnectionString, _bstr_t UserID,_bstr_t Password, long Options );

    上述函数中参数ConnectionString为连接字串;参数UserID是用户名;参数Password是登陆密码;参数Options是连接选项,用于指定Connection对象对数据的更新许可权,一般情况下Options可以是如下几个常量:

    adModeUnknown:缺省。当前的许可权未设置

    adModeRead:只读

    adModeWrite:只写

    adModeReadWrite:可以读写

    adModeShareDenyRead:阻止其它Connection对象以读权限打开连接

    adModeShareDenyWrite:阻止其它Connection对象以写权限打开连接

    adModeShareExclusive:阻止其它Connection对象以读写权限打开连接

    adModeShareDenyNone:阻止其它Connection对象以任何权限打开连接

    我们给出一些常用的连接方式供大家参考:

    (1)通过JET数据库引擎对ACCESS2000数据库的连接:

    m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;
    Data Source=C:\\test.mdb","","",adModeUnknown);

    (2)通过DSN数据源对任何支持ODBC的数据库进行连接:

    m_pConnection->Open("DataSource=adotest;UID=sa;PWD=;","","",adModeUnknown);

    (3)不通过DSN对SQL SERVER数据库进行连接:

    m_pConnection->Open("driver={SQLServer};Server=127.0.0.1;DATABASE=vckbase;
    UID=sa;PWD=139","","",adModeUnknown);

    其中Server是SQL服务器的名称,DATABASE是库的名称。

    第三步:查询


     	m_rec.CreateInstance( __uuidof( Recordset ) );
    	CString sss;
    
    	_variant_t vno,vname,vsex,vtel,vqq,vsu;
    	m_rec->Open("select * from student" ,m_con.GetInterfacePtr()  , adOpenStatic , adLockOptimistic , adCmdText);
    	while (! m_rec->adoEOF)
    	{
    		vno = m_rec->GetCollect(_variant_t((long)0));
    		vname = m_rec->GetCollect("姓名");
    		m_rec->MoveNext();
    		sss += (LPCTSTR)(_bstr_t)vno ; 
    		sss += (LPCTSTR)(_bstr_t)vname ;
    		sss += "\r\r\n";
    	}
    

    Open()方法的原型如下:

    HRESULT Recordset15::Open ( const _variant_t & Source, const_variant_t & ActiveConnection, enum CursorTypeEnum CursorType, enumLockTypeEnum LockType, long Options )

    上述函数中参数Source是数据查询字符串;参数ActiveConnection是已经建立好的连接(我们需要用Connection对象指针来构造一个_variant_t对象);参数CursorType光标类型,它可以是以下值之一;请看这个枚举结构:

    enum CursorTypeEnum
    {
    adOpenUnspecified = -1,///不作特别指定
    adOpenForwardOnly = 0,///前滚静态光标。这种光标只能向前浏览记录集,比如用MoveNext向前滚动,这种方式可以提高浏览速度。但诸如BookMark,RecordCount,AbsolutePosition,AbsolutePage都不能使用
    adOpenKeyset = 1,///采用这种光标的记录集看不到其它用户的新增、删除操作,但对于更新原有记录的操作对你是可见的。
    adOpenDynamic = 2,///动态光标。所有数据库的操作都会立即在各用户记录集上反应出来。
    adOpenStatic = 3///静态光标。它为你的记录集产生一个静态备份,但其它用户的新增、删除、更新操作对你的记录集来说是不可见的。
    };

    参数LockType表示数据库的锁定类型,它可以是以下值之一,请看如下枚举结构:

    enum LockTypeEnum
    {
    adLockUnspecified = -1,///未指定
    adLockReadOnly = 1,///只读记录集
    adLockPessimistic = 2,悲观锁定方式。数据在更新时锁定其它所有动作,这是最安全的锁定机制
    adLockOptimistic = 3,乐观锁定方式。只有在你调用Update方法时才锁定记录。在此之前仍然可以做数据的更新、插入、删除等动作
    adLockBatchOptimistic = 4,乐观分批更新。编辑时记录不会锁定,更改、插入及删除是在批处理模式下完成。
    };

    第四步:关闭连接

    	m_idet = sss;
    
    	if (m_con->State)            //关闭连接
    	{
    		m_con->Close();
    	}
    	if (m_rec->State)
    	{
    		m_rec->Close();
    	}
    	::CoUninitialize();
    	UpdateData(false);



    我连接的是  ACCESS2000数据库

    成功连接





    展开全文
  • VC中使用ADO操作数据库对于在VS上开发数据库应用程序是必备的文档
  • VC使用ADO操作数据库的方法,此WORD文档初步介绍了VC环境中使用ADO技术访问数据库的方法。适合初学者。。
  • 利用ADO访问数据库(VC)

    2011-03-22 09:27:38
    利用ADO访问数据库的例子,使用VC6.0编程
  • 一个VCADO访问数据库的类源码,功能很完善

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,702
精华内容 680
关键字:

adovc数据库