求大佬帮助一个MFC的问题,同一段代码,过了一段时间就出错了,之前用这段代码还好好的,现在就报错连接

2019-01-02 21:50发布

_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;
}

2条回答
\"骚年 ilove
2楼-- · 2019-01-02 22:20

终于找到愿意了,是保留字的原因,希望以后和我一样的初学者可以早点发现这个原因。 微软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

查看更多
\"骚年 ilove
3楼-- · 2019-01-02 22:28

应该是数据库改动了,连接串需要改一下?

查看更多
登录 后发表回答