0

使用 C++ 构建器连接到 Firebird 数据库后,我无法从简单的选择请求中获得结果。

我对很多班级成员有些困惑:

void __fastcall TForm2::btn1Click(TObject *Sender)
{  TSQLConnection   co = new TSQLConnection(this); 
   Base_Firebird *fb = new Base_Firebird()  ;
   bool  bl = fb->Connecter(co);   
   String sqlstring = "select nom_action from T_ACTION where CLE_ACTION=6 ";     
   if (bl)     
      TSQLQuery *req = new TSQLQuery(NULL) ;    
   req->SQLConnection = co ;
   req->SQL->Add(sqlstring);
   req->Open() ;
  }

我的问题是打开 TSQLQuery 后,我不知道如何获取结果并执行命令。

4

2 回答 2

0

尝试将子程序的结尾更改为以下内容:

if (bl)    
{ /// you forgot compound operator here !!!!! 
      TSQLQuery *req = new TSQLQuery(this) ;    
   req->SQLConnection = co ;
   req->SQL->Text = sqlstring;
   req->Open() ;

   int j = 0;
   while( !req->EOF() ) 
   {
      ++j;
      String Value = req->Fields[0]->AsString;
      ShowMessageFmt( "Row %d ==> Value: %s ", ARRAYOFCONST(( j, Value )) );

      // String MSG = Format( "Row %d ==> Value: %s ", ARRAYOFCONST(( j, Value )) );
      // ShowMessage( MSG );

     req -> Next();
   };
   req->Close();
   ShowMessage("Data over.");
  }
  req -> Free();  // maybe "delete req;" would work too, dunno
}

去检查:

于 2017-03-29T12:24:52.660 回答
0

阅读 Embarcadero 的文档。有关如何使用您正在使用的 SQL 组件的整章,包括:

如何执行数据库过程

导航数据集

使用 dbExpress

使用 dbExpress 组件索引

使用 TSQLQuery

数据.SqlExpr.TSQLQuery

例如:

void __fastcall TForm2::btn1Click(TObject *Sender)
{
    TSQLConnection *co = new TSQLConnection(NULL); 
    Base_Firebird *fb = new Base_Firebird();
    if (fb->Connecter(co))
    {
        TSQLQuery *req = new TSQLQuery(NULL);
        req->SQLConnection = co;
        req->SQL->Text = "select nom_action from T_ACTION where CLE_ACTION=6";
        req->Open();
        while (!req->Eof)
        {
            // use req->Fields as needed...
            req->Next();
        }
        delete req;
    }
    delete fb;
    delete co; 
}
于 2017-03-29T22:19:05.273 回答