查询中的多个字段在 C++ Builder 6 中不起作用

Multiple fields in query don't work in C++ Builder 6

我正在使用 C++ Builder 6,我想在我的 MySQL 的 table 查询中查询多个 field/column ] 数据库。

比方说,我有一个名为 "users" 的 table,我的 table 有字段 "id"、"name"、"username" 和"password"。请检查以下示例:

query = "SELECT name FROM users;";  // WORKS

query = "SELECT name, username FROM users;";  // WORKS ONLY FOR THE 1ST FIELD "name"

query = "SELECT * FROM users;";  // DOESN'T WORK: GIVES ME EAccessViolation

query = "SELECT name FROM users UNION SELECT username FROM users;";  // WORKS BUT IT ISN'T A SOLUTION

到目前为止,我的其余代码几乎与我在此 guide 中找到的相同。

我可以同时查询1个以上的字段吗?

完整代码:

String query;

outputMemo->ClearSelection();


// PROBLEMATIC QUERY !!!
query = "SELECT * FROM users;";


try {
  SQLQuery1->SQL->Text = query;
  SQLQuery1->Active = true;
}
catch (Exception& E) {
  outputMemo->Text = "Exception raised with message" + E.Message;
}


// Show the results of the query in a TMemo control.

TStringList *list;
TField      *currentField;
String      currentLine;

if (!SQLQuery1->IsEmpty()) {
  SQLQuery1->First();
  list = new TStringList;
  __try {
    SQLQuery1->GetFieldNames(list);

    while (!SQLQuery1->Eof) {
      currentLine = "";
      for (int i=0; i<list->Count; i++) {
        currentField = SQLQuery1->FieldByName(list->Strings[i]);
        currentLine = currentLine + " " + currentField->AsString;
      }

      outputMemo->Lines->Add( currentLine.c_str() );
      SQLQuery1->Next();
    }
  }
  catch (Exception& E) {
    outputMemo->Text = "Exception raised with message" + E.Message;
  }

  list->Free();
}

提前感谢您的帮助和抽出时间。

指导您 link 使用 SQLite 而不是您代码中的 MySQL

我建议每个 DBMS 的文件不同

虽然 MySQL 可以直接使用它自己的驱动程序,使用 MySQL 的 api,使用 ODBC MySQL 可能允许使用组件。

我发现问题出在 MySQL 的错误 dbExpress 驱动程序。 Dll dbxopenmysql50.dll 可能只适用于 MySQL v5.0。 MySQL 的 DevArt dbExpress 驱动程序可用于比 MySQL.

的 v5.0 更高的版本