Würde mal behaupten, dass der Datenaustausch ansich, nicht mit einer Datenbank gemacht wird, sondern mit einem Netzwerkprotokoll
Die Daten werden sicherlich in Datenbanken abgelegt, wo auch sonst?!
Seas
Ich will mit VC++6 Datentypen von Felden in einer Access-Datenbank auslesen.
Ist das möglich?
Die Anbindung erfolgt über OLEDB!
hab jetzt schon einiges versucht/gesucht nur klappt nix!
wäre für hilfe sehr dankbar!
lg Taranga
So, habe es selbst rausgefunden. Wenn mans weiss ganz einfach. Und hier die Lösung, damit andere die das Prob haben nich mehr suchen müssen:
SQLPrepare(hstmt, (SQLCHAR *) "INSERT INTO professoren (Name) VALUES (?)", SQL_NTS);
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_DEFAULT, SQL_CHAR, 0, 0, &text, 0, 0);
SQLExecute(hstmt);
Und in text steht einfach, das zeug aus der Edit Box drin.
Damit kann das Thema geclosed werden...
tabelle.* holt dir immer alle Spalten.
Wenn du nur bestimmte willst oder eine bestimmte Reihenfolge dann muss du sie angeben.
tabelle1.spalte1,tabelle2.spalte1,tabelle1.spalte2,tabelle2.spalte2 u.s.w.
Die Reihenfolge ist bei so einem SELECT egal.
Es gibt aber auch Fälle wo es nicht egal ist aber das betrifft Dich nicht.
Hallo!
Ich versuch mit einem connectionstring von einer Dialogfeldanweisung auf eine DB mit einem Interbase Treiber zugreifen. Wenn ich das Programm ausführe kommt folgende Fehlermeldung:
...Systemfehler 126 (INTERSOLV InterBase ODBC Driver (*gdb)) konnte der angegeben Treiber nicht geladen werden.
Hab versucht eine neue Version von MDAC herunter zuladen, hat aber nicht funktioniert.
Weis irgendwer Rat?
Randan schrieb:
d.h. dieses kleine Commandlinetool müsste sich mit der Datenbank verbinden und die mitgegebene Procedure gegen die Datenbank absetzen ?
Genau!!! Du könntest natürlich auch das Original Commandtool nachinstallieren auf den PC's wo es benötigt wird.
Hallo,
ich glaube deine CREATE PROCEDURE - Syntax ist falsch:
Probier's mal nach dieser Vorlage:
CREATE PROCEDURE fuelle_kunde()
DEFINE i INT;
DEFINE kd VARCHAR(8);
FOR i = 1 TO 50
LET kd = 'Kunde ' || i;
INSERT INTO kunde VALUES(i, kd);
END FOR;
END PROCEDURE;
EXECUTE PROCEDURE fuelle_kunde();
Schau dir die Syntax hier genauer an:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_create_4hk5.asp
Ich denke, dass BEGIN und END in der CREATE PROCEDURE - Anweisung nichts zu suchen haben.
MfG
Eddy
Du hast ein schlechtes Datenbank design.
Mach aus dem Username ein Vorname und Nachname.
Falls dies zwei unterschiedliche User sein sollen, regle das über eine extra Tabelle.
Wie ist denn m_BVK1 definiert? Ich gehe ja stark davon aus, daß du dessen Wert noch aus der Datenbank holen solltest.
Außerdem: Wozu legst du dir denn ein neues "Einbinden"-Objekt an? Du hast doch schon ein gültiges Objekt (*this), das alle nötigen Informationen besitzt:
double Einbinden::get_preis()
{
double p;
Open();
Requery(); // Den Datensatz aktualisieren
MoveLast();// zum letzten Datensatz (aktuellen Preis gehen)
//woher bekommt m_BVK1 seinen Wert?
p=m_BVK1; // Variable aus der DB
return p;
}
// Wenn dir das zu unübersichtlich ist, kannst du auch 'this->Open();' etc schreiben
PS: CPP-Tags helfen, deine Code-Schnipsel lesen zu können
PPS: Und es reicht, die Frage einmal zu stellen
Hallo johny.
Deine letzten Aussagen/Fragen waren rein rethorisch, oder?
Andernfalls ... die Antworten auf diese Fragen stecken bereits in den Antworten von Cin und mir.
Deine Tabell wir denke ich sehr groß sein. Weiters wird der Zwischenspeicher nicht ausreichen um genügen Daten vorzuhalten.
Du sollte zuerstmal deine Tabellen normalisieren.
Es ist ein Unterschied ob eine 2 GB Datei durchsucht werden muss oder ob die Datei nur 50 MB ist.
Viele 50 MB sind oft schneller als wenn es eine große Tabelle ist.
Hallo!
Ich hab eine Dialogfeldanwendung und greife auf eine Interbase DB zu. Hab dazu ein Klasse von CRecordset abgeleitet (<afxdb.h> auch überall eingefügt..).
Die Membervariablen dieser Klasse sind auch verfügbar, ich kann aber auf sie vom Dialogfeld aus (Eingabefeld->Klassenassistent-> Membervariable hinzufügen) nicht zugreifen!
Ich will das ganze mit Pointer realisieren ( habs so bei einer SDI Anweisung schon gemacht).
double Einbinden::get_preis()
{
double p=8;
Einbinden m_pSet;
// Einbinden m_pSet = OnGetRecordset();
m_pSet = new Einbinden(NULL);
m_pSet->Open();
m_pSet->Requery(); // Den Datensatz aktualiesieren
m_pSet->MoveLast();// zum letzten Datensatz (aktuellen Preis gehen)
p=m_BVK1; // Variable aus der DB
return p;
}
Ich übernehm p in eine andere Memberfunktion von CAboutDlg und probiers so anzuzeigen. Wenn ich nun das ganze kompilier, erscheint zwar der Dialog, aber wenn ich ihn aktualisieren will, (Button eingefügt) stürzt das Programm ab.
Wenn ich den Pointer mit OnGetRecordset init. dann kommen zwei Fehlermeldungen:
error C2440: 'initializing' : 'int' kann nicht in 'class Einbinden *' konvertiert werden
error C2065: 'OnGetRecordset' : nichtdeklarierter Bezeichner
Hab schon gegoogelt, und eure Foren durchblättert, und Tutorials bei euch ausprobiert, bei Dialogfeldanw. hats aber noch nicht funktioniert, dass ich einen Wert aus der DB auslese, den Datensatz aktualisiere und den neuen Wert dann in meinem Programm weiterverwende.
Mit connectionstrings hats auch nicht funktioniert und die MSDN hilft auch nicht wirklich weiter!
Help??