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

时间:2014-06-03 11:31:02

标签: mysql winapi visual-c++ mysql-connector

它应该如何工作:用户点击包含大量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;

CRASH INFO

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

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

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

1 个答案:

答案 0 :(得分:0)

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