MFC学习(一)——ADO数据库编程

这几篇是是在MFC框架下做保险项目的学习心得,只学了两周,但是还是学了很多知识。 下面介绍一下用ADO来进行数据库的各种操作。 1、数据库连接和打开 这次项目用的是SQL Server数据库,ADO连接数据遇到最重要的问题就是找到连接字符串,经过亲身经历各种尝试,在网上发现了一种无bug的方法,就是通过新建ado.udl文件,然后打开填写相应的数据库后用记事本打开即可得到连接字符串。下面是我封装的一个打开数据库的方法:

 1 BOOL CDateOperator::OpenDateBase()
 2 {
 3
 4     if(NULL ==    m_pConnection){
 5         AfxMessageBox(L"Create Instance failed!");
 6         return FALSE;
 7     }
 8     if(m_pConnection){
 9
10
11         try
12         {
13
14             const _bstr_t strSRC= "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=mydb;Data Source=LI5CH\\SQLEXPRESS";
15
16             HRESULT hr = m_pConnection->Open(strSRC,L"",L"",-1);
17         }
18         catch(_com_error &e)
19         {
20             CString errormsg;
21             errormsg.Format(L"关闭连接——操作错误!\r\n错误信息:%s",e.ErrorMessage());
22             AfxMessageBox(errormsg);
23
24         }
25
26     }
27     return TRUE;
28
29 }

2、ADO如何执行sql语句

BOOL CDateOperator::ExcuteSQL(CString strSQL){
    if(NULL ==    m_pConnection) return FALSE;
    try
        {

            HRESULT hr = m_pConnection->Execute(_bstr_t(strSQL),NULL,-1);
        }
        catch(_com_error &e)
        {
            return FALSE;
        }
        return TRUE;
}

3、ADO如何插入记录

BOOL CDateOperator::Insert_db(DEMO objuser)
{
    if(NULL == m_pConnection) return FALSE;
    _RecordsetPtr m_pRecordset;
    HRESULT hr = m_pRecordset.CreateInstance(L"ADODB.Recordset");
    if(FAILED(hr)) return FALSE;

    CString strSQL = L"SELECT User_ID, User_Name FROM fate";
    hr = m_pRecordset->Open(_bstr_t(strSQL),m_pConnection.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText);
    if(FAILED(hr)){
        m_pRecordset.Release();
        return FALSE;
    }
    try
    {
        m_pRecordset->AddNew();
    }
    catch(_com_error &e)
    {
        m_pRecordset->Close();
        m_pRecordset.Release();
        return FALSE;
    }
//    byte byData[10000];
    try
    {
        m_pRecordset->PutCollect("User_ID",_variant_t(objuser.User_ID));
        m_pRecordset->PutCollect("User_Name",_variant_t(objuser.User_Name));
    }
    catch(_com_error &e)
    {
        m_pRecordset->Close();
        m_pRecordset.Release();
        return FALSE;
    }
    m_pRecordset->Update();
    m_pRecordset->Close();
    m_pRecordset.Release();
    return TRUE;
}

4、ADO如何查询数据

BOOL CDateOperator::Select_db(vector<DEMO>& vecObjUser)
{
    if(NULL == m_pConnection) return FALSE;
    _RecordsetPtr m_pRecordset;
    HRESULT hr = m_pRecordset.CreateInstance(L"ADODB.Recordset");
    if(FAILED(hr)) return FALSE;
    vecObjUser.clear();
    CString strSQL = L"SELECT User_ID, User_Name FROM fate";
    hr = m_pRecordset->Open(_bstr_t(strSQL),m_pConnection.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText);
    if(FAILED(hr)){
        m_pRecordset.Release();
        return FALSE;
    }
    VARIANT_BOOL bRet = m_pRecordset->GetadoEOF();
    while(!bRet){
        _variant_t varUserID = m_pRecordset->GetCollect(L"User_ID");
        _variant_t varUserName = m_pRecordset->GetCollect(L"User_Name");
        DEMO objUser;
        objUser.User_ID=varUserID.intVal;

        _tcscpy(objUser.User_Name,(TCHAR*)(_bstr_t)varUserName);
        vecObjUser.push_back(objUser);
        m_pRecordset->MoveNext();
        bRet = m_pRecordset->GetadoEOF();

    }
    m_pRecordset->Close();
    m_pRecordset.Release();
    return TRUE; 

}

5、ADO如何更新数据

BOOL CDateOperator::update_db(DEMO objuser)
{
    if(NULL == m_pConnection) return FALSE;
    _RecordsetPtr m_pRecordset;
    HRESULT hr = m_pRecordset.CreateInstance(L"ADODB.Recordset");
    if(FAILED(hr)) return FALSE;
    CString strSQL;
    strSQL.Format(L"SELECT User_ID, User_Name FROM fate WHERE User_ID=%d", objuser.User_ID);
    hr = m_pRecordset->Open(_bstr_t(strSQL),m_pConnection.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText);
    if(FAILED(hr)){
        m_pRecordset.Release();
        return FALSE;
    }

//    byte byData[10000];
    try
    {
        m_pRecordset->PutCollect("User_Name",_variant_t(objuser.User_Name));
    }
    catch(_com_error &e)
    {
        m_pRecordset->Close();
        m_pRecordset.Release();
        return FALSE;
    }
    m_pRecordset->Update();
    m_pRecordset->Close();
    m_pRecordset.Release();
    return TRUE;
}

6、下面贴一下构造和析构函数

CDateOperator::CDateOperator(void)
{
    try
    {
        HRESULT hr =  m_pConnection.CreateInstance("ADODB.Connection");
        if(FAILED(hr))
        {
            AfxMessageBox(L"Create Instance failed!");
            m_pConnection = NULL;
        }
    }

    catch(_com_error &e)
    {
    }
}

CDateOperator::~CDateOperator(void)
{
    if(m_pConnection)
    {
        try
        {
            HRESULT hr =  m_pConnection->Close();

        }

        catch(_com_error &e)
        {
        }
    }
    m_pConnection.Release();
    m_pConnection = NULL;

}
时间: 2024-12-25 20:15:27

MFC学习(一)——ADO数据库编程的相关文章

Spring 学习其三:数据库编程

一.直接利用 JDBC 进行数据库编程 虽然有 Spring 和 MyBatis 等数据持久化的利器在手,但还是有必要去了解下传统的 JDBC 开发方式.无论哪种框架,其本质都是在传统的 JDBC 方式上进行了封装. package JdbcTest; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; im

MFC中使用ADO进行数据库操作

参考FROM:http://hi.baidu.com/sunkanghome/item/e1fda510b3186359f1090ee2 数据库与数据库编程: 当前各种主流数据库有很多,包括Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, Interbase / Firebird, PostgreSQL, SQLite, SAP/DB, TimesTen, MS ACCESS等等. 数据库编程是对数据库的创建.读写等一列的操作.数据库编程分

java 数据库编程 学习笔记 不断更新

最近开始学习java,感觉java的数据库编程需要发个随笔记录一下,话不多说 切入正题. 一.数据库访问技术的简介 应用程序  →  执行SQL语句 →数据库 → 检索数据结果 → 应用程序   ( ODBC         JDBC(两个常用的API)) java主要使用的 JDBC驱动程序进行数据库的编程 Java 应用程序 <------> JDBC   <------>  数据库 二.JDBC 的体系结构 应用层 ↓ 驱动层 ↓ 各个接口 •Driver •Connecti

VS2013 MFC ODBC连接SQL SERVER数据库编程(三)

VS2013 MFC ODBC连接SQL SERVER数据库编程(三) 转载请注明:http://blog.csdn.net/my_acm/article/category/2616577 继上一篇讲完对数据库的链接以及一些说明之后,本文将实现对数据库的增删查改等操作. 如上图所示就是最终完成的一个简单的小程序. 首先添加列表框的NM_CLICK响应程序.鼠标放在列表框上,右键->添加事件处理程序,找到MN_CLICK消息,添加并编辑,如下图所示. 在响应函数里面添加如下代码: 这样就实现了,点

ADO.NET数据库编程

ADO.NET数据库编程 1.ADO.NET的相关概念. Microsoft的新一代技术,是ADO组件的后继者. 主要目的是在.NET Framework平台存取数据. 提供一致的对象模型,可以存取和编辑各种数据源的数据,即对这些数据源,提供了一致的数据处理方式. ADO.NET保存和传递数据是使用XML格式.可实现与其他平台应用程序以XML文件进行数据交换. 2.数据访问类库的名称空间 针对不同的数据源,使用不同名称空间的数据访问类库,即数据提供程序.常用的数据源包括四种: Microsoft

MFC ADO数据库操作

MFC ADO数据库操作 - 延陵小明 - CSDN博客 http://blog.csdn.net/guoming0000/article/details/7280070/ 内容比较乱,作为草稿,对现有的ado数据库操作函数方法进行汇总. 小函数m_pRecordset->RecordCount//取得记录数量 全局变量#import "msado15.dll" no_namespace rename("EOF","adoEOF")rena

VS2013 MFC ODBC连接SQL SERVER数据库编程(二)

VS2013 MFC ODBC连接SQL SERVER数据库编程(二) 转载请注明:http://blog.csdn.net/my_acm/article/category/2616577 在上一篇中,我已经说明了如何连接SQL SERVER数据库 下面参考http://wenku.baidu.com/link?url=h1rGgnhSmnclH2lFexHmlP_SZ2LUDRy5xM4wrbTfYlRXZLj2o0ugMT_PFGRxA1XI2pm8NUuEcKGQRA6D77ZieDoyM

Java学习笔记—第十三章 数据库编程入门

第十三章 数据库编程入门 了解JDBC Java中对数据库的访问主要是通过JDBC进行的.JDBC是Java数据库连接技术(Java Database Connectivity)的简称,是用于执行SQL语句的API,可以为多种关系数据库提供统一访问.由一组用Java语言编写的类和接口组成.(SQL是Structure Query Language的缩写,意义为结构化查询语言,是一种标准的关系数据库访问语言.) JDBC的工作机制 使用JDBC完成对数据库的访问主要包括以下五个层次:Java应用程

数据库编程总结

当前各种主流数据库有很多,包括Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, Interbase / Firebird, PostgreSQL, SQLite, SAP/DB, TimesTen, MS ACCESS等等.数据库编程是对数据库的创建.读写等一列的操作.数据库编程分为数据库客户端编程与数据库服务器端编程.数据库客户端编程主要使用ODBC API.ADO.ADO.NET.OCI.OTL等方法:数据库服务端编程主要使用OLE D