使用 MFC C++ 6.0 从 ms 访问中读取整数数据
Read Integer data from ms access using MFC C++ 6.0
我有一个MS Access数据库,其中包含一个名为ANIMATEUR的表,有3列:
- id(整数)
- nom(varchar(12))
- 普雷诺姆(瓦尔查尔(12))
我可以读取 varchar 列的数据,但我的问题是当我尝试读取整数列时 - 我收到错误......我认为问题是由从整数转换为 CString 引起的。
这是我的代码:
void gestionAnimateur::refreshList(){
m_liste.DeleteAllItems();
COleVariant var;
CString nom,prenom,id;
database.Open(cheminDB);
record.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT * FROM ANIMATEUR",NULL);
int i = 0;
while(! record.IsEOF()){
record.GetFieldValue("id",var);
id= (LPCSTR) var.pbstrVal;
m_liste.InsertItem(i,id,0);
record.GetFieldValue("prenom",var);
prenom = (LPCSTR) var.pbstrVal;
m_liste.SetItemText(i,1,prenom);
record.GetFieldValue("nom",var);
nom = (LPCSTR) var.pbstrVal;
m_liste.SetItemText(i,2,nom);
i++;
record.MoveNext();
}
database.Close();
record.Close();
}
这里的解决方案是代码 ETDITED:
void gestionAnimateur::refreshList(){
m_liste.DeleteAllItems();
COleVariant var;
CString nom,prenom,idStr;
int idInt;
char idChar[12];
database.Open(cheminDB);
record.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT * FROM ANIMATEUR",NULL);
int i = 0;
while(! record.IsEOF()){
record.GetFieldValue("id",var);
idInt = var.intVal;
itoa(idInt,idChar,10);
idStr=idChar;
m_liste.InsertItem(i,idStr,0);
record.GetFieldValue("prenom",var);
prenom = (LPCSTR) var.pbstrVal;
m_liste.SetItemText(i,1,prenom);
record.GetFieldValue("nom",var);
nom = (LPCSTR) var.pbstrVal;
m_liste.SetItemText(i,2,nom);
i++;
record.MoveNext();
}
database.Close();
record.Close();
}
这是因为
您正在尝试将 int 存储到 CString 中。首先使用 var.vt 获取正确的类型,然后相应地获取正确的值(如果这真的是一个 int,那么 vt.intVal)。当你有了 int 时,你可以把它转换成一个字符串(如果你有 C++11,则转换为 std::to_string,或者 std::atoi)。
顺便说一下,C型很丑,不安全,更喜欢C++演员表。
有关变体的更多信息,请单击此处
相关文章:
- 引发异常:读取访问冲突**dynamicArray**为0x1118235.发生
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?
- 读取访问冲突.这0xCDCDCDCD
- 0xC0000005:访问冲突读取位置 0x00000000. 重载 == 运算符的问题
- 尝试通过共享指针使用变量时读取访问冲突
- C++ 读取访问冲突,0xCDCDCDCD
- 读取缓冲区时访问冲突 UNICODE_STRING
- 从二进制文件中读取元素时引发异常(引发异常:读取访问冲突. _Pnext 0xB414D4)
- 从文件读取,并循环访问文件以写入数组
- 使用智能指针读取访问冲突
- 引发异常:读取访问冲突.**此**0x40错误
- (此函数用于计算 SMA).在 FA.exe 中0x00509159引发异常: 0xC0000005:访问冲突读取位置0
- 如何在读取文件时访问以前的字符串?
- C++ 访问读取错误
- 使用 vtkDICOMWriter 编写 DICOM 时访问读取冲突
- 从结构传递数组成员会导致访问读取冲突
- C++访问读取位置时发生冲突,类此指针为NULL
- 将两个字符串一起分配,获取访问读取冲突
- sprintf()访问读取位置时发生冲突
- 0xccccc处的访问读取冲突