_ConnectionPtr m_pConn;
_variant_t RecordsAffected;
if (FAILED(m_pConn.CreateInstance("ADODB.Connection")))
{
AfxMessageBox(_T("Create Instance failed!"));
return;
}
else
{
m_pConn->Open("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C://Users//liu//Desktop//database1.mdb", "", "", adModeUnknown);
try
{
CString sql = _T("INSERT INTO user(username,password) VALUES("" + UserName + "","" + Password + "")");
AfxMessageBox(sql); //察看插入代码是否有问题
m_pConn->Execute((_bstr_t)sql, &RecordsAffected, adCmdText);
}
catch (_com_error &e)
{
AfxMessageBox(_T("喵喵喵"));
m_pConn->Close();
}
m_pConn->Close();
}
报错信息是这个:inline HRESULT Connection15::Close ( ) {
HRESULT _hr = raw_Close();
if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
return _hr;
}
终于找到愿意了,是保留字的原因,希望以后和我一样的初学者可以早点发现这个原因。 微软JET这些数据库引擎都会有一些保留字,所以大家在给表取名字的时候避免使用一些保留字,如果使用保留字要用[ ]框起来 CString sql = _T("INSERT INTO users(username,[password]) VALUES("" + UserName + "","" + Password + "")");这个是我出错的代码,原因就是password是数据库的一个保留字,所以要用中括号框子来
新手来看:jet 4.0 的保留字《控件》
http://access911.net/index.asp?u1=a&u2=75FABF1E10DC
应该是数据库改动了,连接串需要改一下?
数据库就改了一下表,应该不是这个的愿意吧