Newbie
Registriert seit: 10.03.2006
Beiträge: 2
|
Zugriff von C-Programm auf Mysql Datenbank
Hallo!
Ich habe ein Programm das auf eine Datenbank zugreifen soll. Soweit so gut das C-Programm (Borland) ist funktionstüchtig
und die Datenbank auf einem zweiten Rechner(Linux) auch nur die Verbindung dieser 2 funktioniert nicht.
#include <conio.h>
#include <stdio.h>
#include <wtypes.h>
#include <sql.h>
#include <DBLogDlg.hpp>
#include <vcl.h>
#pragma hdrstop
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//Zuerst werden die Strukturen definiert, die das selbe Format haben,
//wie die Funktionen des Prototypens
typedef long (CALLBACK *EAnalogIn)(long*,
long,long,long,long*,float*);
//EAnalogIn: Liest die Spannung von einem analogen Eingang ein.
typedef long (CALLBACK *AISample)(long*,long,long*,long,
long,long,long*,long*,long,long*,float*);
// AISample: Liest die Spannungen von 1, 2oder 4 analogen Eingangen.
int main()
{ typedef INT32 SQLResult;
SQLResult pConnection ->connect ( proj1, root, 2582124) = 0;
for(;; ) //Leerlaufschleife
{ //Definition der Variable um die DLL-Datei zu laden
HINSTANCE hDLLInstance;
//Definition der Variablen die später verwendet werden
EAnalogIn m_pEAnalogIn;
AISample m_pAISample;
//Nun wird versucht die DLL-Datei zu laden
if (hDLLInstance = LoadLibrary("ljackuw.dll"))
{
//Bei erfolgreichen Laden werden folgen Funktionen durchgeführt
m_pEAnalogIn = (EAnalogIn)::GetProcAddress(hDLLInstance,"EAnalogI n"); //Pointer der Funktion EAnalogIn
m_pAISample = (AISample)::GetProcAddress(hDLLInstance,"AISample" ); //Pointer der Funktion AISample
}
else //Falls der Treiber nicht installiert wurde kommt folgende Fehlermeldung
{
printf("\nFailed to load DLL\n");
getchar();
return 0;
}
/*m_pEAnalogIn hält einen Pointer zu der m_pEAnalogIn Funktion. Der Compiler
erkennt automatisch m_pEAnalogIn als Pointer einer Funktion und ruft
die Funktion mit den Parametern auf. Wenn wir eine neue Variable vom Typ
tEAnalogIn erstellen und geben "pNewVar = m_pEAnalogIn" ein, so kann der
Compiler die Funktion nicht aufrufen, da er diese nicht erkennt. */
long errorcode; //Ein LabJack spezifischer Error-Code, 0 bedeutet kein Fehler 2 bedeutet,
// dass keine LabJAck-Einheit angeschlossen ist.
long idnum=-1; //idnum = Local ID, Serien Nummer, oder -1 für das Gerät,
//das als erstes gefunden wird.
long stateIO=0; //stateIO= Ausgang für IO0-IO3.Hat aber keine Auswirkung,
//falls IO als Eingang konfiguriert wird, da eine andere Funktion verwendet werden
//muss, die den Ausgang defeniert.
long numCh=4; //numChannels = Anzahl der analogen Eingängen die zu lesen sind(1,2,3 oder 4).
long channels[4]; // channels = Pointer zeigt auf ein Array von einem Kanal mit
//dem niedrigensten numchannel Element.Jeder Kanal kann einfach oder differentiel verwendet werden.
// 0-7 für einfach und 8-11 für differentiel.
long gains[4]={0,0}; //gains= Pointer zeigt auf ein Array von einem Kanal
//mit dem niedrigensten numChannel Element. Gain-Befahle sind 0=1, 1=2, ... , 7=20.
//Diese Applikation ist nur für differentielle Anwendungen verfügbar
long ov=0; //ov=overVoltage = Wenn >0, wurde eine Überspannung an einem der Eingängen entdeckt.
float voltages[4]={0}; //voltages = Pointer zu dem Array, das die eingelesenen Spannung zurückgibt.
//Lesen der 8 analogen Eingängen mittels AISample
channels[0]=0;
channels[1]=1;
channels[2]=2;
channels[3]=3;
errorcode = m_pAISample(&idnum,0,&stateIO,0,1,4,channels,gains ,0,&ov,voltages);
printf("\nAISample error = %d\n",errorcode);
// mysql_query("insert into 'emg_ua'('zahl','age','startzeit','werte','endzeit ')Values(5,44,328432843,rand()%100,3242131234123)" );
printf("AI0 = %2.2f V\n",voltages[0]);
printf("AI1 = %2.2f V\n",voltages[1]);
printf("AI2 = %2.2f V\n",voltages[2]);
printf("AI3 = %2.2f V\n",voltages[3]);
}
getchar();
return 0;
SQLResult Status pConnection ->disconnect()=0;
}
Unteranderen habe ich das ganze auch mit opendatabase probiert.
Fazit nichts was ich daweil Probiert habe hat funktioniert.
Ich hoffe ihr könnt mir helfen.
|