首页 新闻 会员 周边

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

0
[已解决问题] 解决于 2018-10-16 09:01

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

FFFFFFFly的主页 FFFFFFFly | 初学一级 | 园豆:108
提问于:2018-10-11 11:22
< >
分享
最佳答案
0

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

FFFFFFFly | 初学一级 |园豆:108 | 2018-10-16 09:00
其他回答(1)
0

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

徒然喜欢你 | 园豆:1741 (小虾三级) | 2018-10-11 11:27

数据库就改了一下表,应该不是这个的愿意吧

支持(0) 反对(0) FFFFFFFly | 园豆:108 (初学一级) | 2018-10-11 11:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册