void CAddRecord::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
UpdateData();

CString sql;
//检查数据完整性
if(m_Name.IsEmpty()||m_No.IsEmpty()||m_Age.IsEmpty()||m_Sex.IsEmpty()||m_Address.IsEmpty())
{
AfxMessageBox(_T("请输入完整信息!"));
return;
}
else
{
sql="insert into 学生信息(学号,姓名,年龄,性别,家庭住址) values('" +m_No+ "','" +m_Name+ "','" +m_Age+ "','" +m_Sex+ "','" +m_Address+ "')";     
}
_variant_t RecordsAffected;
theApp.m_pConnection->Execute((_bstr_t)sql,&RecordsAffected,adCmdText);
AfxMessageBox(_T("成功插入1 条数据!"));
//刷新list 列表的内容
C简单数据库App *pApp=(C简单数据库App *)AfxGetApp();
C简单数据库Dlg *pDlg=(C简单数据库Dlg *)pApp->m_pMainWnd;
pDlg->ReadtoList(); OnOK();
}
这是我在vs2008中编写MFC连接数据库的代码的一部分,编译连接都通过了,但是运行输入数据后,总会出现一些错误,请教帮忙解决!不胜感激!

解决方案 »

  1.   

    啊,不对,这样编译不能通过
    若把sql="insert into 学生信息(学号,姓名,年龄,性别,家庭住址) values('" +m_No+ "','" +m_Name+ "','" +m_Age+ "','" +m_Sex+ "','" +m_Address+ "')";   换成sql = "insert into 学生信息(学号,姓名,年龄,性别,家庭住址) values( m_No, m_Name,m_Age,m_Sex,m_Address)";就可以编译通过,但运行错误。之前的错误为        “错误 1 error C2678: 二进制“+”: 没有找到接受“const char [60]”类型的左操作数的运算符(或没有可接受的转换) f:\myproject\test\database\简单数据库\简单数据库\addrecord.cpp 67”
      

  2.   

    换成
    sql = "insert into 学生信息(学号,姓名,年龄,性别,家庭住址) values( m_No, m_Name,m_Age,m_Sex,m_Address)";
    一定是错误的,因为你把变量名写入SQL里了,这样变量无效,不能传给sql语句,sql执行就会出错你的变量里应该有整数没有转换成字符串
      

  3.   

    请问在MFC下怎么连接的access呀。代码能贴出来吗?