MFC数据库

 环境vs2008,自带sql数据库

准备:

1>  打开sql自带数据库的-〉SQL Server外围应用配置器-〉(此处配置不是很清楚,只是开始不能创建数据库,但是这里做了一些配置后,就可以通过vs2008创建数据库了)

2> 在vs2008   的服务器资源管理器  中创建数据库.右键点击数据连接->创建新SQL Server数据库.

   完成后再将新建的数据库添加到数据源.

 

开始

 

使用CDatabase 连接数据库.

CDatabase m_database;

  try

     {

         //(_T("SQLODBC"):  将数据库添加到数据源时给数据库的名字.

   //第二个参数当前不支持,必须为FALSE

         //  第三个参数是: 是否只读打开,

   //第四个是连接字符串。

         m_database.Open(_T("SQLODBC"),FALSE,FALSE,_T("ODBC;UID=****;PWD=****"));

     }         

  catch(CDBException* ep)

    {

        ep->ReportError();

        ep->Delete();

    }

    catch(CMemoryException* mep)

   {

         mep->ReportError();

         mep->Delete();

    }

 

 

CDatabase不能从数据库取回数据,但是可以插入/更新,删除 数据,

 

如果想取回数据,使用CRecordset类

 

 

CRecordset的构造函数需要使用一个已经连接的CDatabase对象。也可以适用没有打开的CDatabase.没有试过。

 

CRecordset m_record( &m_database)

 

  try
  {

//第一个参数SQL选择语句

//第二个语句打开方式,
   record.Open(CRecordset::snapshot,_T("select * from table1 where ....."),CRecordset::none);
  }
  catch(CDBException* ep)
  {
   ep->ReportError();
   ep->Delete();
  }
  catch(CMemoryException* mep)
  {
   mep->ReportError();
   mep->Delete();
  }

 

执行完成后,可以使用.GetFieldValue() 方法和MoveNext()方法读取所有数据,注意:在使用GetFieldValue读取数据时,指定的列下标要依次增大,如果先指定下标5,则下标0/1/2/3/4的数据丢失,取出的所有数据都可以放到CString对象中,然后再转换。

 

 

 

数据回滚

当涉及到两个数据表插入/更新/删除等操作时。

如果第二张表操作失败是,需要回滚第一张表的操作。

 

m_pDatabase->BeginTrans();  //开始事务  设置回滚到的点。一般放在最开始。

 

m_pDatabase->Rollback();//如果出错,回滚。

 

m_pDatabase->CommitTrans();//如果都成功,提交事务,完成此次事务。

 

缺一不可。 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值