gpt4 book ai didi

c++ - 使用 MFC C++ 6.0 从 ms access 读取整数数据

转载 作者:行者123 更新时间:2023-11-28 02:56:15 25 4
gpt4 key购买 nike

我有一个 MS Access 数据库,其中包含一个名为 ANIMATEUR 的表并且有 3 列:

  1. id(整数)
  2. 名义上(可变字符(12))
  3. prenom(varchar(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 时,您可以将其转换为字符串( std::to_string 如果您使用 C++11,或 std::atoi )。

顺便说一句,C Actor 很丑而且不安全,更喜欢 C++ casts .

More infos on Variant here

关于c++ - 使用 MFC C++ 6.0 从 ms access 读取整数数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21913537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com