我的更新语句如下:wsprintf(sqlstr, L"Update cs set cs.id=?,cs.customer=?,cs.title=?,cs.logo=?,cs.address=?,cs.website=?, \
cs.contact1_last_name=?,cs.contact1_first_name=?,cs.contact1_mobile=?,cs.contact1_fax=?,cs.contact1_email=?, \
cs.contact2_last_name=?,cs.contact2_first_name=?,cs.contact2_mobile=?,cs.contact2_fax=? where cs.id=%d", m_id);
sqlret = SQLExecDirect(h_sqlSTMT, sqlstr, SQL_NTS);
前面以对要更新进去的字段进行绑定,并赋值。当我去掉最后的cs.contact2_fax=? 时就不会出现下面的异常,加上去就有了。它的值有没有什么问题
sqlret = SQLBindParameter(h_sqlSTMT, 15, SQL_PARAM_INPUT, SQL_UNICODE_CHAR, SQL_WCHAR, 15, 0, &CS_fax2, 0, &cb_char);
请问是不是字段太多引起的,因为这个表有22个字段,处理起来很麻烦。LEX_Manager.exe 中的 0x783252f8 (mfc80ud.dll) 处未处理的异常: 0xC0000005: 写入位置 0x00370031 时发生访问冲突
中断的位置是:if( _AtlInterlockedDecrement( &nRefs ) <= 0 )虽然发生了中断,但很奇怪值却照样更新到数据库里面了。请高手帮忙看一下。
cs.contact1_last_name=?,cs.contact1_first_name=?,cs.contact1_mobile=?,cs.contact1_fax=?,cs.contact1_email=?, \
cs.contact2_last_name=?,cs.contact2_first_name=?,cs.contact2_mobile=?,cs.contact2_fax=? where cs.id=%d", m_id);
sqlret = SQLExecDirect(h_sqlSTMT, sqlstr, SQL_NTS);
前面以对要更新进去的字段进行绑定,并赋值。当我去掉最后的cs.contact2_fax=? 时就不会出现下面的异常,加上去就有了。它的值有没有什么问题
sqlret = SQLBindParameter(h_sqlSTMT, 15, SQL_PARAM_INPUT, SQL_UNICODE_CHAR, SQL_WCHAR, 15, 0, &CS_fax2, 0, &cb_char);
请问是不是字段太多引起的,因为这个表有22个字段,处理起来很麻烦。LEX_Manager.exe 中的 0x783252f8 (mfc80ud.dll) 处未处理的异常: 0xC0000005: 写入位置 0x00370031 时发生访问冲突
中断的位置是:if( _AtlInterlockedDecrement( &nRefs ) <= 0 )虽然发生了中断,但很奇怪值却照样更新到数据库里面了。请高手帮忙看一下。
但你的语句中只提供了 15 个参数。
where cs.id=%d 这个也要绑定参数吗?写到sqlstr中后就变成了where cs.id=11111,所以应该不用绑定一个参数吧。错误就是
LEX_Manager.exe 中的 0x783252f8 (mfc80ud.dll) 处未处理的异常: 0xC0000005: 写入位置 0x00370031 时发生访问冲突
但数据已经写进数据库。谢谢!
debug 中检查一下 &CS_fax2 的内容是什么。会不会是字符串超长了。
debug 中检查一下 &CS_fax2 的内容是什么。会不会是字符串超长了。
类型也配置,同一组变量,用它们去添加一条记录没有问题。还想确定一下,在网上看了一下,有些地方说,更新的时候要SQLSetPos到要更新的那条记录的位置。
如果不做这步的话有影响吗?where cs.id=%d时,出来的只会有一条记录。