weixin_40203956
weixin_40203956
采纳率100%
2019-08-21 15:19

MFC向MySQL数据库插入数据时报错

已采纳

连接数据库没有问题,就是向数据库插入数据时报错:

void CtestDlg::OnBnClickedButton1()
{
    // TODO: 在此添加控件通知处理程序代码
    MYSQL m_sqlCon;  
    //初始化数据库对象  
    mysql_init(&m_sqlCon);  

    if (!mysql_real_connect(&m_sqlCon, "xxxx", "root",  
        "xxxx", "test", 3306, NULL, 0))  
    {  
        AfxMessageBox(_T("数据库连接失败!"));  
        return;  
    }  
    else//连接成功则继续访问数据库,之后的相关操作代码基本是放在这里面的  
    {  
        AfxMessageBox(_T("数据库连接成功!"));  

        //UpdateData(true);  
        CString insert;
        insert.Format(TEXT("insert into modulefile(id,module_sn,file_name) values (null,'123','456')"));
        // 执行 sql 语句。       
        if (mysql_query(&m_sqlCon, insert) == 0)  
        {  
            AfxMessageBox(_T("插入数据成功!"));  
        }  
        else {  
            AfxMessageBox(_T("插入数据失败!"));  
        }  
    }  
    UpdateData(false);  
    mysql_close(&m_sqlCon);//关闭Mysql连接  
}

UpdateData(true); 这一句报错:0x00007FF7478C4FAC 处有未经处理的异常(在 test.exe 中):堆栈 Cookie 检测代码检测到基于堆栈的缓冲区溢出。
把这句注释掉以后虽然仍然报错但是数据库中有数据插入了。究竟是为什么不能写这一句,应该如何获取控件里输入的值呢

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • weixin_40203956 weixin_40203956 2年前

    已解决 是动态数据库和静态数据库的问题

    点赞 评论 复制链接分享
  • J4cks0n J4cks0n 2年前

    UpdateData(TRUE):将控件中输入的值更新到变量中。
    那么你的控件中输入了什么,和什么变量绑定的呢?

    点赞 评论 复制链接分享
  • zqbnqsdsmd zqbnqsdsmd 2年前