 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
27.09.2004, 19:20
|
#1
|
|
TP-Member
Registriert seit: Aug 2004
Ort: Österreich
|
MSSQL & C++
Also ich hab das Problem, dass ich mit c++ noch nie auf eine Datenbank zugegriffen hab, dies aber in meinem fall muss!
Es geht darum, werte die über rs232 eingelesen wurden in die datenbank zu schreiben.
Für das Einlesen von der RS232 habe ich ein Konsolenanwendung erzeugt!
Hier wäre der CODE:
Zitat:
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <io.h>
#include <windows.h>
using namespace std;
int _tmain()
{
HANDLE hCom;
OVERLAPPED ol;
DWORD byteswritten;
char ctrl[1],buffer[3],id[64],idold[64];
int i=0,j=0,count=0,end=0,res=0,s=0,len=0;
COMMTIMEOUTS commTimeouts = {0};
memset(&commTimeouts, 0, sizeof(commTimeouts));
commTimeouts.ReadIntervalTimeout = MAXDWORD;
commTimeouts.ReadTotalTimeoutConstant = MAXDWORD;
commTimeouts.WriteTotalTimeoutConstant = 0;
commTimeouts.ReadTotalTimeoutMultiplier = 10;
commTimeouts.WriteTotalTimeoutMultiplier = 0;
hCom = CreateFile ( "COM1",
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
0 );
if (hCom == INVALID_HANDLE_VALUE) {
printf ("Fehler beim Zugriff auf COM1...");
return 2;
}
SetCommTimeouts(hCom, &commTimeouts);
// Schnittstelle initialisieren
DCB dcb;
GetCommState (hCom, &dcb);
BuildCommDCB ("baud=9600 parity=n data=8 stop=2", &dcb);
SetCommState (hCom, &dcb);
byteswritten = 0;
memset(&ol,0,sizeof(OVERLAPPED));
memset(id,0,64);
memset(idold,0,64);
memset(ctrl,0,1);
memset(buffer,0,10);
do
{
ReadFile (hCom, ctrl, 1, &byteswritten, &ol);
i = ctrl[0];
i &= 0xFF;
if(i == 0xfc)
{
end = 0;
count = 1;
res = 0;
j = i;
memset(id,0,64);
}
else if(count >= 1 && i != 0xff)
{
count++;
j = i;
if(j == 0xfd)
{
ReadFile (hCom, ctrl, 1, &byteswritten, &ol);
j = ctrl[0];
j &= 0xFF;
j += 0x80;
}
}
else if(i == 0xff && count == 17)
{
j = i;
count++;
end = 1;
}
else
{
cout<<"Lesefehler\n";
count = 0;
res = 0;
end = 0;
}
if(count >= 1)
{
itoa (j,buffer,10);
if(count > 1)
{
id[res] = '.';
res++;
}
s=strlen(buffer);
for(len=1;len<=s;len++)
{
id[res] = buffer[len-1];
res++;
memset(ctrl,0,1);
}
}
if(count == 18 && end == 1 && strcmp(id,idold))
{
memset(idold,0,64);
strcpy(idold,id);
cout<<id<<"\n";
//Hier sollte in die MSSQL-Datenbank geschrieben werden
count = 0;
res = 0;
}
}
while(1);
CloseHandle (hCom);
return 0;
}
|
Für ein paar codesamples zum verbinden und schreiben in die datenbank wäre ich sehr dankbar!!
__________________
Lebe jeden Tag als ob es dein letzter wäre... - ...es könnte dein letzter sein!
|
|
|
27.09.2004, 19:32
|
#2
|
|
TP-Supporter
Registriert seit: Jun 2003
Ort: Fürth
|
hallo,
möchtest du per ADO oder ODBC auf den SQL-Server zugreifen, wobei hier ADO mehr Möglichkeiten bietet , auch was die Geschw. angeht ?
hier sind erst einmal die GRundlaGEN
http://download.pearsoned.de/leseeck...data/start.htm
ist aber eher für MFC-Programmierung
allerdings ist für ADO etwas Zeit erforderlich
nebenbei ist auch noch wichtig, ob du mit MS C++ oder mit BCC auf die db zugreifen möchtest
__________________
Die perfekte Web-Applikation ist: sicher,skalierbar,schnell, anwenderfreundlich,intuitiv, wiederverwendbar,flexibel,transparent,umfassend,dynamisch, zuverlässig,einfach,modular,effizient, stabil,handhabbar,verteilt,robust, persistent,kollaborativ,mächtig,intelligent,leicht verwendbar,portierbar,erweiterbar,
fehlerfrei, und zu guter Letzt billig
Geändert von CB.NET (27.09.2004 um 19:34 Uhr).
|
|
|
27.09.2004, 19:49
|
#3
|
|
Guest
Registriert seit: Aug 2002
|
Zitat:
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <io.h>
#include <windows.h>
|
Und das nennst du C ++. 
Aber egal, warum hast du keine Lib eingebunden, die für MSSQL? Ohne geht ja nicht.
|
|
|
28.09.2004, 09:51
|
#4
|
|
TP-Member
Registriert seit: Aug 2004
Ort: Österreich
|
Ich muss über den ODBC Treiber auf die Datenbank zugreifen!!
Das Programm das ich verwende ist MS-Visual C++ 2003
Außerdem weiß ich nicht welche Lib ich für mssql verwenden muss!!
wenn mir jemand vielleicht ein kleines code-sample posten kann wäre mir sehr geholfen!!!
danke!!
__________________
Lebe jeden Tag als ob es dein letzter wäre... - ...es könnte dein letzter sein!
|
|
|
28.09.2004, 12:53
|
#5
|
|
TP-Supporter
Registriert seit: Jun 2003
Ort: Fürth
|
als erstes eine ODBC-Verbindung anlegen in win
den dort angelegten Namen gibst du im CDatabase-Object mit an...
Code:
CDatabase db;
db->OpenEx("DSN=Datenquellenname;UID=Username;PWD=Passwort");
//nun ein Recordset Objekt
CRecordset rs(&db); //Datenbank übergeben
//jetzt kannst du ganz einfach nur mit der db
db->ExecuteSQL(SQL); //machen
//oder mit dem Recordset Objekt
rs->Open(CRecordset::forwardOnly,Select);
//Sql ausführen
das ist für ganz normales c++, ohne NET
P.S.
noch ein schicker Link zum Stöbern
http://www.mindcracker.com/mindcrack...e/database.asp
__________________
Die perfekte Web-Applikation ist: sicher,skalierbar,schnell, anwenderfreundlich,intuitiv, wiederverwendbar,flexibel,transparent,umfassend,dynamisch, zuverlässig,einfach,modular,effizient, stabil,handhabbar,verteilt,robust, persistent,kollaborativ,mächtig,intelligent,leicht verwendbar,portierbar,erweiterbar,
fehlerfrei, und zu guter Letzt billig
Geändert von CB.NET (28.09.2004 um 12:59 Uhr).
|
|
|
28.09.2004, 16:31
|
#6
|
|
TP-Member
Registriert seit: Aug 2004
Ort: Österreich
|
error C2065: 'CDatabase': nichtdeklarierter Bezeichner
fehlt mir da vielleicht eine headerdatei???
(Es handelt sich um eine Konsolenanwendung!! (cmd))
__________________
Lebe jeden Tag als ob es dein letzter wäre... - ...es könnte dein letzter sein!
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 02:23 Uhr.
|
 |