MyODBC will nur bedingt
-
Hallo,
ich habe seit gestern MySQL installiert und will versuchen ein C++ Programm zu
schreiben mit dem ich auf die Tabellen zugreifen kann.Ich habe zu der Datenbank mit MyODBC eine Datenquelle hergestellt die auch
funktioniert. Habe ein simples SDI Programm geschrieben um mal zu testen ob
dieses MyODBC auf funktioniert. Es lief, konnte mich durch alle Datensätze
durchklicken.Ich habe einige Probleme mit einer Konsolenanwendung. Das komische ist, das
sie mit anderen ODBC Datenquelle funktioniert. Das Problem taucht auf bei
SQLCONNECT. Es kann sich nicht mehr der Datenquelle verbinden. Wenn ich den Namen der Datenquell gegen einen anderen Typ ändere gehts. Nur mit MyODBC
scheint es so nicht zu klappen.Die MyODBC Datenquell heist: myodbc
Und der Tabellenname ist: neuertestIch poste hier einmal den verwendeten Sourcecode
#include <windows.h>
#include <sqlext.h>
#include <stdio.h>
#include <sql.h>
#include <string.h>//Fehlervariable
SQLRETURN retcode;//Umgebungshandle
SQLHSTMT hstmt = NULL;
SQLHDBC hdbc = NULL;
SQLHENV henv = NULL;int jahr;
int monat;
int tag;long t1,t2,t3=5;
SDWORD num1;
SDWORD num2;
SDWORD num3;void main(void)
{retcode = SQLAllocEnv(&henv);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
printf("jo, SQLAllocEnv laeuft!!!\n");
}retcode = SQLAllocConnect(henv, &hdbc);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
printf("jo, SQLAllocConnect laeuft!!!\n");
}retcode = SQLConnect(hdbc, (UCHAR FAR *)"myodbc", SQL_NTS, NULL,0,NULL,0);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
printf("jo, SQLConnect laeuft!!!\n");
}retcode = SQLAllocStmt(hdbc, &hstmt);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
printf("jo, SQLAllocStmt laeuft!!!\n");
}retcode = SQLExecDirect(hstmt,(UCHAR FAR
"SELECT * FROM neuertest", SQL_NTS);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
printf("jo, SQLAllocHandle laeuft!!!\n");
}retcode = SQLBindCol(hstmt, 1, SQL_C_SLONG, (PTR)&tag, sizeof(tag), &num1);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
printf("\tjo, Bindcol1 laeuft!!!\n");
}
retcode = SQLBindCol(hstmt, 2, SQL_C_SLONG, (PTR)&monat, sizeof(monat), &num2);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
printf("\tjo, Bindcol2 laeuft!!!\n");
}retcode = SQLBindCol(hstmt, 3, SQL_C_SLONG, (PTR)&jahr, sizeof(jahr), &num3);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
printf("\tjo, Bindcol3 laeuft!!!\n");
}retcode = SQLFetch(hstmt);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
printf("1. Datensatz: %d\n",tag);
printf("2. Datensatz: %d\n", monat);
printf("3. Datensatz: %d\n\n\n", jahr);
}SQLFreeStmt(hstmt, SQL_DROP);
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_ENV,hdbc);}
Wie gesagt, wenn ich myodbc durch eine andere Datenquelle von ODBC austausche geht es. Also irgendwie eigenartig!
Naja, vielen Dank für eure Hilfe.