Annonceindlæg fra Computerworld
Gefion skaber fremtidens AI
Supercomputeren Gefion er Danmarks nye AI-kraftværk og skal sikre, at både forskning og virksomheder kan være med i den teknologiske front.
14. august 2025
31. januar 2004 - 17:45
#3
Jeg formoder at vi snakker ODBC. Typisk laver man en DSN inde i ODBC Manager og så kan et program connecte til den DSN. Men man kan også lave en DSNless connection ved at angive driver og de andre oplysninger som angive si DSN direkte i koden.
31. januar 2004 - 17:46
#4
Jeg lavede det her eksempel for ike så længe siden: #include <stdio.h> #include <stdlib.h> #include <windows.h> #include <sql.h> #include <sqlext.h> char* constr = "Driver={Microsoft Access Driver (*.mdb)};Dbq=D:\\Database\\MSAccess\\Test.mdb;Uid=Admin;Pwd=;"; char* sqlstr = "SELECT * FROM T1"; int main(int argc, char *argv[]) { SQLHENV Environment; SQLHDBC DataBaseConnect; SQLHSTMT stmt; SQLRETURN stat; int i,il,sl,outconlen; char s[10],outconstr[1024]; stat = SQLAllocEnv(&Environment); if((stat!=SQL_SUCCESS)&&(stat!=SQL_SUCCESS_WITH_INFO)) printf("Error in AllocEnv\n"); stat = SQLAllocConnect(Environment,&DataBaseConnect); if((stat!=SQL_SUCCESS)&&(stat!=SQL_SUCCESS_WITH_INFO)) printf("Error in AllocConnect\n"); stat = SQLDriverConnect(DataBaseConnect,NULL, (SQLCHAR *)constr,(SQLSMALLINT)strlen(constr), (SQLCHAR *)outconstr, (SQLSMALLINT)sizeof(outconstr), (SQLSMALLINT *)&outconlen,SQL_DRIVER_COMPLETE); if((stat!=SQL_SUCCESS)&&(stat!=SQL_SUCCESS_WITH_INFO)) printf("Error in Connect\n"); stat = SQLAllocStmt(DataBaseConnect,&stmt); if((stat!=SQL_SUCCESS)&&(stat!=SQL_SUCCESS_WITH_INFO)) printf("Error in AllocStmt\n"); stat = SQLExecDirect(stmt,(SQLCHAR *)sqlstr,strlen(sqlstr)); if((stat!=SQL_SUCCESS)&&(stat!=SQL_SUCCESS_WITH_INFO)) printf("Error in ExecDirect\n"); stat = SQLBindCol(stmt,1,SQL_C_LONG,&i,sizeof(i),(SQLINTEGER *)&il); if((stat!=SQL_SUCCESS)&&(stat!=SQL_SUCCESS_WITH_INFO)) printf("Error in BindCol\n"); stat = SQLBindCol(stmt,2,SQL_C_CHAR,s,sizeof(s),(SQLINTEGER *)&sl); if((stat!=SQL_SUCCESS)&&(stat!=SQL_SUCCESS_WITH_INFO)) printf("Error in BindCol\n"); for(;;) { stat = SQLFetch(stmt); if((stat!=SQL_SUCCESS)&&(stat!=SQL_SUCCESS_WITH_INFO)) break; s[sl] = '\0'; printf("%d %s\n",i,s); } SQLFreeStmt(stmt,SQL_DROP); SQLDisconnect(DataBaseConnect); SQLFreeConnect(DataBaseConnect); SQLFreeEnv(Environment); return 0; }