很多谢前辈网上的经验分享。
其实很早之前就操作成功,因为中间又去看了一下js,对本来就业余的新手的我现在是有点忘记了我这里整理当笔记记录下来。也可供还在为增,删,改无从下手又刚好有缘看到的朋友一个参考。
前面已经有一篇写过ADO连接数据库这里就不重复记录了。
首先操作数据库的增加。
_variant_t tem;
try
{
/* 打开本地Access库 */
m_pConnection.CreateInstance( __uuidof( Connection ) );
m_pConnection->Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=data.mdb;Jet OLEDB:Database Password=", "", "", adModeUnknown );
}
catch( _com_error e )
{
AfxMessageBox( "数据库连接失败,确认数据库是否在当前路径下!" );
}
/* AfxMessageBox("数据库连接成功!"); */
m_pRecordset.CreateInstance( __uuidof( Recordset ) );
m_pRecordset->Open( "select * from table", m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText );
if ( !m_pRecordset->BOF )
{
m_pRecordset->MoveFirst();
}
/*
* else
* {
* AfxMessageBox("表内数据为空");
* return;
* }
*/
while ( !m_pRecordset->adoEOF )
{
if ( tem.vt != VT_NULL )
{
tem = m_pRecordset->GetCollect( "name" );
id = (LPCSTR) _bstr_t( tem );//好麻烦要转数据类型
}
if ( m_uid == id )
{
flag = 1;
break;
}
m_pRecordset->MoveNext();
}
if ( flag != 1 )
{
try {//这里就是增数据
m_pRecordset->AddNew();
m_pRecordset->PutCollect( "name", _variant_t( m_uid ) );
m_pRecordset->PutCollect( "pwd", _variant_t( m_upw ) );
m_pRecordset->Update();
AfxMessageBox( "添加成功" );
}
catch( _com_error e )
{
AfxMessageBox( "添加失败" );
}
}else {
AfxMessageBox( "已有相同帐号" );//限制不能增加相同帐号
}
m_pRecordset->Close();
m_pRecordset = NULL;
然后是修改。前面那一段都一样的,就改一下添加那里的语句。
try {//这是修改
m_pRecordset->MoveFirst();
m_pRecordset->Move( i );
m_pRecordset->PutCollect( "name", _variant_t( id ) );
m_pRecordset->PutCollect( "pwd", _variant_t( pw ) );
m_pRecordset->Update();
}
catch( _com_error e )
{
AfxMessageBox( "修改失败" );
}
AfxMessageBox( "修改成功" );
删除也一样。前面那一段都一样的,就改一下那里的语句。
try {
m_pRecordset->MoveFirst();
m_pRecordset->Move( i );
m_pRecordset->Delete( adAffectCurrent );
m_pRecordset->Update();
}
catch( _com_error e )
{
AfxMessageBox( "删除失败" );
}
AfxMessageBox( "删除成功" );
以上就是vc ado连access的增,删,改操作。ADO连别的数据操作也差不多吧?