By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
424,852 Members | 994 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 424,852 IT Pros & Developers. It's quick & easy.

Accessing Database from c++

P: n/a
Hai All,

Can anyone suggest or provide me sample code for making ODBC
connection and executing simple queries from c++. I am using sql server
2000. Also please tell what are the header files to be included. I
created a DSN and now I need to make connection with that DSN and
execute query from my code.

Thanks in advance..
Please help!!!! Looking forward for the response.

Jun 16 '06 #1
Share this Question
Share on Google+
4 Replies


P: n/a
I can provide you a little example ... not in C++ but in C .... you can
modify it and reuse in C++ code.... the only problem is that this
example make an oracle connection... but it should be quite the same...
only the string should change
bye
Pier Paolo

Wallace ha scritto:
Hai All,

Can anyone suggest or provide me sample code for making ODBC
connection and executing simple queries from c++. I am using sql server
2000. Also please tell what are the header files to be included. I
created a DSN and now I need to make connection with that DSN and
execute query from my code.

Thanks in advance..
Please help!!!! Looking forward for the response.

#include <stdio.h>
#include "sqlmine.h"
struct data {
char nome[1024];
int nomelen;
SQL_TIMESTAMP_STRUCT ora;
int oralen;
} data1;

void usa(void *altro)
{
printf("nome %s data creazione ",data1.nome);
if (data1.oralen!=0)
printf("%d-%d-%d:%d:%d:%d\n",data1.ora.year,data1.ora.month,data 1.ora.day,data1.ora.hour,data1.ora.minute,data1.or a.second);
}

SQLRETURN sqltrybind(SQLHANDLE *sqlstmt)
{
int res;
res= SQLBindCol(sqlstmt,
1,
SQL_C_CHAR,
&(data1.nome),
1024,
&data1.nomelen);

res=res+SQLBindCol(sqlstmt,
2,
SQL_C_TYPE_TIMESTAMP,
&(data1.ora),
1024,
&data1.oralen);
return res;
}

int sqlconnect(char *server,char *user,char *pwd)
{
int res;
if (res=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE ,&sqlenv)!=SQL_SUCCESS) printf("Errore in allocEnv\n");
if (res=res*SQLSetEnvAttr( sqlenv,SQL_ATTR_ODBC_VERSION, (SQLPOINTER) SQL_OV_ODBC3, SQL_IS_UINTEGER)!=SQL_SUCCESS) printf("Errore in SQLATTREnv\n");
if (res=res*SQLAllocHandle(SQL_HANDLE_DBC,sqlenv,&sql conn) != SQL_SUCCESS)
{
printf("Errore in allocConn %d\n",res);
}
if (res=res*SQLConnect(sqlconn,server,strlen(server), user,strlen(user),pwd,strlen(pwd))!=SQL_SUCCESS) printf("Errore in Connessione\n");
return res;
}

/* Esegue Select */
void sqlselect(char *select, sqlbind sqlb,void *altro,usedata used)
{
int res;
SQLHANDLE sqlstmt;
res=SQLAllocHandle(SQL_HANDLE_STMT,sqlconn,&sqlstm t);
if (res==SQL_SUCCESS) printf("Errore in creazione Handle Statement\n");
res=SQLPrepare(sqlstmt,select,strlen(select));
if (res==SQL_SUCCESS) printf("Errore in creazione SQLPrepare\n");
sqlb(sqlstmt);
SQLExecute(sqlstmt);
while (SQLFetch(sqlstmt)==SQL_SUCCESS)
{
used(altro);
}
SQLFreeHandle(SQL_HANDLE_STMT,sqlstmt);
}

void esegui()
{
sqlconnect("TEST","SYSTEM","MANAGER");
sqlselect("select object_name,created from user_objects",sqltrybind,NULL,usa);
sqlDisconnect();
}

/* Disconnect */
void sqlDisconnect()
{
SQLDisconnect(sqlconn);
SQLFreeHandle(SQL_HANDLE_DBC,sqlconn);
SQLFreeHandle(SQL_HANDLE_DBC,sqlenv);
}
#include <sql.h>
#include <sqlext.h>

typedef SQLRETURN (*sqlbind)(SQLHANDLE *sqlstmt);
typedef void (*usedata)(void *altro);
SQLHANDLE sqlenv;
SQLHANDLE sqlconn;

int sqlconnect(char *server,char *user,char *pwd);
void sqlDisconnect();
void sqlselect(char *select, sqlbind sqlb,void *altro,usedata used);

#include <windows.h>
#include <string.h>
#include <io.h>
#include <stdio.h>
#include <fcntl.h>
#include <commctrl.h>
HINSTANCE hinstp;
void startDebug();
int leggi(HWND hwnd,int obj,char *buffer,int size);
char username[256];
char datasource[256];
char pwd[256];

#include "common.h"

void startDebug()
{
int hCrt,hCrti,hCrte;
FILE *hf,*hfi,*hfe;
AllocConsole();
hCrt = _open_osfhandle((long)GetStdHandle ( STD_OUTPUT_HANDLE),_O_TEXT );
hf = fdopen( hCrt, "w" );
*stdout = *hf;
setvbuf( stdout, NULL, _IONBF, 0 );

hCrti = _open_osfhandle((long) GetStdHandle ( STD_INPUT_HANDLE),_O_TEXT );
hfi = fdopen( hCrti, "r" );
*stdin = *hfi;
setvbuf( stdin, NULL, _IONBF, 0 );

hCrte = _open_osfhandle((long)GetStdHandle ( STD_OUTPUT_HANDLE),_O_TEXT );
hfe = fdopen( hCrte, "w" );
*stderr = *hfe;
setvbuf( stderr, NULL, _IONBF, 0 );

}
int leggi(HWND hwnd,int obj,char *buffer,int size)
{
memset(buffer,0,size);
if (GetDlgItemText(hwnd, obj, buffer, size)) {
printf("%s\n",buffer);
return 1;
}
return 0;
}
Jun 16 '06 #2

P: n/a

Wallace wrote:
Can anyone suggest or provide me sample code for making ODBC
connection and executing simple queries from c++. I am using sql server
2000. Also please tell what are the header files to be included. I
created a DSN and now I need to make connection with that DSN and
execute query from my code.


If you're using MSVC and you are willing to use ADO then it's really
simple. Just use:

#import <c:\program files\common files\system\ado\msado15.dll> rename(
"EOF", "adoEOF" )

Something like this will open a connection:

ADODB::_ConnectionPtr writeCnx;
writeCnx = ADODB::_ConnectionPtr();
writeCnx.CreateInstance( __uuidof( ADODB::Connection ) );
writeCnx->CommandTimeout = 60;
writeCnx->Open( writeDsn().c_str(), L"", L"",
ADODB::adConnectUnspecified );

To execute SQL then use something like this:

ADODB::_RecordsetPtr rs;
rs = writeCnx->Execute( cmd.c_str(), &res, ADODB::adOptionUnspecified
);

I'll leave it as an excercise to get the data out. Read the ADO COM
spec to work it out. It's actually all pretty easy.
K

Jun 16 '06 #3

P: n/a
[ODBC Request and sample code reply redacted]

1. Please do not post attachments to comp.lang.c++. See the FAQ
http://www.parashift.com/c++-faq-lit...t.html#faq-5.4

2. This is Off Topic. See the FAQ
http://www.parashift.com/c++-faq-lit...t.html#faq-5.9

A newsgroup with "microsoft", "windows", or "database" in the name would
be more appropriate.
Jun 16 '06 #4

P: n/a

"Wallace" <pr****************@gmail.com> wrote in message
news:11**********************@g10g2000cwb.googlegr oups.com...
Hai All,

Can anyone suggest or provide me sample code for making ODBC
connection and executing simple queries from c++. I am using sql server
2000. Also please tell what are the header files to be included. I
created a DSN and now I need to make connection with that DSN and
execute query from my code.

Thanks in advance..
Please help!!!! Looking forward for the response.


If you are using Windows, I suggest you look at:
http://msdn.microsoft.com/data/learning/MDAC/
Jun 17 '06 #5

This discussion thread is closed

Replies have been disabled for this discussion.