用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);语句就报错!