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个回答

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

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

J4cks0n
J4cks0n 回复weixin_40203956: 不加\数据库应该可以插入
12 个月之前 回复
weixin_40203956
weixin_40203956 对就是搞不清楚是哪里越界的问题…\这个杠是看别人博客照葫芦画瓢写上的 是没有用么
12 个月之前 回复
J4cks0n
J4cks0n 回复weixin_40203956: 报错应该不是这里的问题,这个问题好像是哪里越界了,然后你format哪里加'\'做什么
12 个月之前 回复
weixin_40203956
weixin_40203956 但是运行的话就报一样的错误并且没有数据插入
12 个月之前 回复
weixin_40203956
weixin_40203956 insert.Format(TEXT("insert into modulefile(id,module_sn,file_name) values (null,\'%s',\'%s')"),m_edit1,m_edit2); 控件m_edit1和m_edit2里就简单的输了几个数字
12 个月之前 回复
weixin_40203956
weixin_40203956 我尝试这样插入数据
12 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐