VC访问Access

来源:百度知道 编辑:UC知道 时间:2024/06/02 02:52:21
我要通过几个button键添加,删除access里面的记录,我应该把对access的连接放在哪里呢?每按一次button连接一次access肯定有问题,我每次连接后都关闭了access,但是都只能操作一次,比如只能添加一次,连续第二次添加就有问题了。我试着放在OnInitDialog()里,但是以添加记录就报错。
_ConnectionPtr m_pConnection;
AfxOleInit();
m_pConnection.CreateInstance(__uuidof(Connection));

try
{

m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C://new.mdb","","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox("数据库连接失败,确认数据库New.mdb是否在当前路径下!");

}
_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));

try
{
m_pRecordset->Open("SELECT * FROM data",_variant_t((IDispatch *)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
AfxMessageBox("数据库连接失败!");
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
// IDM_ABOUTBOX must be in t

是ButtonClick中。比如说。看下面的代码

//将培训教材信息写入数据库
CString csSQL = _T("");
int i=1;
int flag=0;
while(!flag)
{
CTrainingBookSet m_recordset(&m_database);
csSQL.Format(_T("select * from TRAINING_BOOK where BOOK_ID=%d"),i);
m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,csSQL);//打开记录集
if(m_recordset.GetRecordCount()==0)
{
csSQL.Format(_T("insert into TRAINING_BOOK values(%d,\'%s\',
\'%s\',%d,%d,%d,%f)"),
i,
m_csBookName,
m_csBookAuthor,
0,
m_nBookCourseID,
m_nBookCount,
m_dBookPrice
);
m_database.ExecuteSQL(csSQL);//执行SQL
m_database.Close();
flag =1;
}

i++;
}

CDialog::OnOK();
}

首先,你要在某一窗口,添加一个按钮。点击它时。会弹出一个窗口。该窗口是为表中添加一项记录的。添好记录后,UpdateData(TRUE)。然后就是打开数据库表的链接,csSQL.Format()中选择