vc使用CDatabase类通过ODBC连接,open()sqlserver2000数据库出0x7c9524b2错

digitalx 2005-11-17 09:04:23
出的错是某某内存不能读,具体为:
"0x7c9524b2"指令引用的"0x00000005"内存。该内存不能为"read".
不管是用open(),还是openEx(),不管怎么调整参数,都是这样,关键是:
用vc调试时决不出错,试了好多次,但只要单独运行编译的exe程序就会出错,不管是运行release版还是debug版都是。
没有打开优化选项,用vc6.0和vs.net2003都试过了,在多台机子上试过了,换过了好几个数据库服务器,不管本地还是远程。
急啊,大虾帮帮忙
...全文
259 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodboyws 2005-11-18
  • 打赏
  • 举报
回复
估计是WriteLogToFile的问题
jazy 2005-11-18
  • 打赏
  • 举报
回复
release版出错的问题,首先请检查所有变量的初始化是否有遗漏,如果没有这方面的问题可以在这段代码里多加几句打印日志的代码,看看各变量的值是否正确。反正你的程序不长,每步一打印都可以^_^
digitalx 2005-11-17
  • 打赏
  • 举报
回复
注:按F5调试运行不会出错,一切正常!!!

并且出错时,try catch捕捉不到错误
digitalx 2005-11-17
  • 打赏
  • 举报
回复
如果点取消进入调试,则显示无源代码,显示反汇编:
7C9524B2 mov ebx,dword ptr [eax]
......
.....
等等,看不懂,“调用堆栈”里显示:
ntdll.dll!7c9524b2()
ntdll.dll!7c9602e7()
等等
请问如何调试?
oyljerry 2005-11-17
  • 打赏
  • 举报
回复
错误调试一下
跟踪一下
digitalx 2005-11-17
  • 打赏
  • 举报
回复
Open_ODBC(CDatabase *db,CString dsn,CString uid,CString pwd)
{
CString str="DSN=";
//str+=dsn;
str+="hldata";
str+=";UID=";
//str+=uid;
str+="sa";
str+=";PWD=";
//str+=pwd;
str+="";
#ifdef _WriteLog
CString strMessage;
strMessage.Format("准备打开ODBC连接");
WriteLogToFile(strMessage);
#endif
try{
db->OpenEx(str,CDatabase::noOdbcDialog|CDatabase::useCursorLib);
#ifdef _WriteLog
CString strMessage;
strMessage.Format("打开ODBC连接");
WriteLogToFile(strMessage);
#endif
}
catch(CDBException *e)
{
#ifdef _WriteLog
CString logstr;
logstr.Format("打开数据源%s失败",str);
WriteLogToFile(logstr);
#endif
e->Delete();
return false;
}
return true;
}
php mysql+sql server 数据库处理 /* 文 件 名:CDataBase.php 名:CDataBase 继承关系:XMLClass 通用属性: $Con | 数据连接标识 $DBaseName | 数据库名称 $UserID | 数据库登陆用户名 $PassWord | 数据库登陆密码 $Address | 数据库地址 $Port | 连接端口号 $DBType | 数据库型【MS_SQL\MYSQL\ORACLE】 $TableName | 数据表名 $release | 是否调试语句 公共方法: set_var($Address,$Port,$DBType,$UserID,$PassWord,$DBaseName) 方法说明:设置数据连接参数 入口参数:同通用属性 返回型:无 DB_Connect() 方法说明:连接数据库 入口参数:无 返回型:连接ID DB_Close() 方法说明:连接数据库 入口参数:无 返回型:无 DB_Select($DBaseName,$Con) 方法说明:选择数据库 入口参数:$DBasename|数据库名称;$Con|数据库连接ID 返回数型:无 CreateDbase($DBname) 方法说明:建立数据库 入口参数:$DBname | 数据库名称,长度20以内的字符,根据不同的数据库型,字符的要求不一定一致 返回型:成功返回 1,失败返回0 DropDbase($DBname) 方法说明:删除数据库 入口参数:$DBname | 数据库名称,长度20以内的字符,根据不同的数据库型,字符的要求不一定一致 返回型:成功返回 1,失败返回0 CreateTable($TableName,$FieldArray,$TypeArray) 方法说明:建立数据表 入口能数: $TableName | 数据表名称、$FieldArray | 字段列表、$TypeArray | 字段型及长度列表 返回型:成功返回 1,失败返回0 DropTable($TableName) 方法说明:删除数据表 入口能数: $TableName | 数据表名称 返回型:成功返回 1,失败返回0 UpdateTable($TableName,$FieldArray,$TypeArray,$Mode) 方法说明:修改表结构 入口能数: $TableName | 数据表名称、$FieldArray | 字段列表、$TypeArray | 字段型及长度列表、$Mode | 操作方式【ADD 添加字段,UPDATE 修改字段、DEL 删除字段】 返回型:成功返回 1,失败返回0 Tab_Insert($TableName,$FieldArray,$ValueArray,$KeyField,$KeyValue) 方法说明:向指定表插入数据 入口能数: $TableName | 数据表名称、$FieldArray | 字段列表、$ValueArray | 字段值列表、$KeyField | 关键字段名、$KeyValue | 关键字段值 返回型:成功返回 1,失败返回0 Tab_Update($TableName,$FieldArray,$ValueArray,$KeyField,$KeyValue,$RArray) 方法说明:修改指定表数据 入口能数: $TableName | 数据表名称、$FieldArray | 字段列表、$ValueArray | 字段值列表、$KeyField | 条件字段名列表、$KeyValue | 条件字段值列表、$RArray | 字段关系(二维数据,[$][0]:与前一个条件的关系"and,or,like,in,not in";[$][1]:字段与值的关系">,=,<=,=,") 返回型:成功返回 1,失败返回0 Tab_Delete($TableName,$KeyField,$KeyValue,$RArray) 方法说明:修改指定表数据 入口能数: $TableName | 数据表名称、$K

4,012

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧