res-> getString()崩溃了应用程序

问题描述 投票:-1回答:1

它应该如何工作:用户点击具有大量ID的列表框。然后,使用指定ID(行)中的数据归档编辑控件。

工作原理:它在res-> getString崩溃

case LBN_SELCHANGE:
{
    string str;
    int index = SendMessage(GetDlgItem(hwnd, IDC_lbList), LB_GETCURSEL, 0, 0);
    string sint = boost::lexical_cast<std::string>(index);
    string smt="SELECT client, telnr, atnrem, papatn, gedapr 
                                   FROM tremreg WHERE id = ";
    string query = smt + sint;
    res = stmt->executeQuery(query.c_str());
    //starts crashing here
    str = res->getString("client");
    SetDlgItemText(hwnd, IDC_eClient, str.c_str());

    str = res->getString("telnr");
    SetDlgItemText(hwnd, IDC_eTelNr, str.c_str());

    str = res->getString("antrem");
    SetDlgItemText(hwnd, IDC_eRemAtn, str.c_str());

    str = res->getString("paprem");
    SetDlgItemText(hwnd, IDC_ePapAtn, str.c_str());

    str = res->getString("gedapr");
    SetDlgItemText(hwnd, IDC_eGedApr, str.c_str());

    delete res;
    delete stmt;
}
break;

崩溃信息:

Unhandled exception at 0x753C812F in Registracija.exe: 
Microsoft C++ exception:sql::InvalidArgumentException at memory location 0x0018F7AC.

围绕谷歌挖掘我发现有人提到应该使用getBlob获取VARCHAR类型值。但这根本没有帮助,而且崩溃的情况也一样。但是getInt可以工作,并且可以在程序的其他部分使用。

问题:我应该采取哪些措施才能使其发挥作用?

mysql winapi visual-c++ mysql-connector
1个回答
0
投票

如果你直接在数据库中执行相同的查询运行吗?还有,所有返回的字段真的是字符串吗?通过名称而不是序列号来调用它们是否有效?即getString(1)等

© www.soinside.com 2019 - 2024. All rights reserved.