环境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();//如果都成功,提交事务,完成此次事务。
缺一不可。