c++ builder: zugriff auf ms access
atrox 13.07.2004 - 20:55 569 2
atrox
in fairy dust... I trust!
|
ich möchte mit einem kleinen shell-tool daten aus einer access-datei holen, allerdings finde ich kein gutes beispiel das mir das ohne gui-elemente ermöglicht. meine bisherigen zwei versuche liefern immer 0 ergebnisse zurück int main(int argc, char* argv[])
{
TDatabase *conn;
hDBICur *cur;
conn=new TDatabase(Screen);
conn->DatabaseName="test";
conn->DriverName="MSACCESS"; // MSACCESS
conn->Params->Append("DATABASE NAME=C:\\atrox\\index.mdb");
conn->Params->Append("PATH=C:\\atrox");
conn->Params->Append("TRACE MODE=0");
conn->Params->Append("LANGDRIVER=Access General");
conn->Params->Append("SQLPASSTHRU MODE=NOT SHARED");
conn->ReadOnly=True;
conn->LoginPrompt=False;
// conn->Connected=True; // alternative
conn->Open();
if (conn->Connected) puts("connected."); // das haut hin!
int i=conn->Execute("select key from items;"); // sollte tausende zurückliefern
printf("test execute=%d datasetcount=%d\n",i,conn->DataSetCount);
for (int i = 0; i < conn->DataSetCount; i++) {
char t[1000];
conn->DataSets[i]->GetFieldData(0,t);
puts(t);
}
getchar(); // wait for input
return 0;
}
alternativ hab ich auch als zweiten teil diesen code versucht, der auch nicht hinhaut TQuery *query=new TQuery(NULL);
query->DatabaseName="test";
query->SQL->Append("select * from items");
query->Prepare();
query->ExecSQL();
printf("query fc=%d\n",query->RowsAffected);
Bearbeitet von atrox am 13.07.2004, 21:01
|
Ringding
Pilot
|
Du solltest wohl ein Open() machen, kein ExecSQL, wenn du selectest.
|
atrox
in fairy dust... I trust!
|
ahh.. und ausserdem darf man sich auf RowsAffected nicht verlassen ! mit query->Eof und query->Next hauts jetzt hin. thx.
|