用Debug版时,一点都没有问题;但是用Relse版调试时,就出现问题:
BOOL CComTestDlg::AddNewStudent(const REC_STUDENT *pRecStudent)
{
//定义学生数据库对象
//CComTestDlg tblStudent;
CEOID ceOid;
//定义字段属性
//CEPROPVAL pProps[4];
CEPROPVAL pProps[2];
DWORD dwErrorCode = 0;
DWORD dwWritten = 0;
//1,打开数据库--在程序初始化时打开或创建
//if (!tblStudent.DB_Open_Student())
if(m_hDB==NULL)
if (!DB_Open_Student())
{
//打开数据库失败
return FALSE;
}
//给字段属性赋值
ZeroMemory(&pProps[0],sizeof(CEPROPVAL)*4);
[color=#FF0000]
//编号
pProps[0].propid = PID_NO;
pProps[0].val.lpwstr = LPWSTR(pRecStudent->szNo);
pProps[0].wFlags = 0;
//数据
pProps[1].propid = PID_NAME ;
pProps[1].val.lpwstr = LPWSTR(pRecStudent->szName);
pProps[1].wFlags = 0;[/color]
//写入记录
ceOid = CeWriteRecordProps(m_hDB,0,2,pProps);
if (ceOid == 0)
{
dwErrorCode = GetLastError();
//如果 dwErrorCode = 183, 表示编号重复
//ERROR_ALREADY_EXISTS--183;ERROR_DISK_FULL--112;ERROR_INVALID_PARAMETER--87;
if (dwErrorCode == ERROR_ALREADY_EXISTS)
{
TRACE(L"编号重复\n");
}
else
{
TRACE(L"写入记录失败 , Error Code = %d \n",dwErrorCode);
}
//关闭数据库
//tblStudent.DB_Close_Student();
DB_Close_Student();
return FALSE;
}
return TRUE;
}
复制代码
红色部分的在Release版时,两个lpwstr变量不能得到数据,说是错误的指针!
然后就执行ceOid = CeWriteRecordProps(m_hDB,0,2,pProps);语句就报错!