win32 programming

hi,

 In win32 programming  , how to connect database(oracle)

 by using win32 .wait for u r reply.









 
sanumakondaAsked:
Who is Participating?
 
makerpConnect With a Mentor Commented:
this is a simple example ive knocked up for you, create a simple oracle database and create
a system dsn for it in control panel. the open function uses global varaibles etc so you will probably
want to chage this.

/* for db stuff */
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#include <stdio.h>

HENV henv;
HDBC hdbc;
int dbopen=0;

/* opens a connection using global variables , bad i know */
#define PM_DSN "your_system_dsn"
#define PM_DSN_USER "your_db_username_if_any"
#define PM_DSN_PW "your_password_if_any"

int DBopen(void)
{
    int res=0;
    RETCODE retcode;
    /*allocate the environment handle*/
    if(SQLAllocEnv(&henv)==SQL_SUCCESS)
    {
         /*allocate the connection handle*/
         if(SQLAllocConnect(henv, &hdbc)==SQL_SUCCESS)
         {
              /* Set login timeout to 5 seconds. */
              SQLSetConnectOption(hdbc, SQL_LOGIN_TIMEOUT, 5);
              SQLSetConnectOption(hdbc, SQL_CURSOR_TYPE, SQL_CURSOR_STATIC);
              /* Connect to data source */
              retcode = SQLConnect(hdbc, PM_DSN, SQL_NTS, PM_DSN_USER, SQL_NTS, PM_DSN_PW, SQL_NTS);

              if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
              {
                        res=1;
                        DATABASE_NAME = getDBName();
              }
         }
         else
         {
              SQLFreeConnect(hdbc);
         }
    }
    else
    {
         SQLFreeEnv(henv);
    }
    dbopen=res;
    return res;
}

void DBclose(void)
{
    if(dbopen)
    {
         SQLDisconnect(hdbc);
         SQLFreeConnect(hdbc);
         SQLFreeEnv(henv);
         if(DATABASE_NAME)
         {
              free(DATABASE_NAME);
         }
    }
    dbopen=0;
}
int DBexecute(char *sql,HSTMT *hstmt)
{
    int res=0;
    RETCODE retcode;

    if(SQLAllocStmt(hdbc, hstmt)== SQL_SUCCESS)
    {
         retcode=SQLPrepare(*hstmt,sql,strlen(sql) + 1);
         if(retcode==SQL_SUCCESS)
         {
              retcode=SQLExecute(*hstmt);
              if(retcode==SQL_SUCCESS)
              {
                   res=1;
              }
         }
    }
    return res;
}

void DBcloseCursor(HSTMT hstmt)
{
    SQLFreeStmt(hstmt, SQL_DROP);
}

void main()
{
    char sql[255];
    HSTMT fstmt;
    long lens;
    RETCODE retcode;
    char name[100];

    DBopen();

    sprintf(sql,"SELECT name FROM users");
    if(DBexecute(sql,&fstmt))
    {      
         SQLBindCol(fstmt,1,SQL_C_CHAR, name,sizeof(name),&lens);
         
         retcode = SQLFetch(fstmt);    
         while(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
         {
              printf("%s\n",name);
              retcode = SQLFetch(fstmt);
         }
         DBcloseCursor(fstmt);
    }
    else
    {  
         printf("DBexecute failure : %s\n",getStmtError(fstmt));    
         exit(1);
    }
    DBclose();
}
0
 
djbusychildCommented:
that's a pretty loaded question...
you could use odbc

check out

http://msdn.microsoft.com/library/default.asp?URL=/library/psdk/dasdk/orcd0esl.htm
0
 
kulinaCommented:
sanumakonda,
Close your other questions please.

Experts,
Before you potentialy waste your time on this member check his record...
Regards.
0
The Lifecycle Approach to Managing Security Policy

Managing application connectivity and security policies can be achieved more effectively when following a framework that automates repeatable processes and ensures that the right activities are performed in the right order.

 
makerpCommented:
i done it in Visual C++ 5
0
 
makerpCommented:
so is see you dont bother rewarding people for their effort and work, 9 questions asked and NONE closed. i looked at your profile.
0
 
NetminderCommented:
sanumakonda,

These questions are still open. Please resolve them appropriately as soon as possible. Continued disregard of your open questions will result in the force/acceptance of a comment as an answer; other actions affecting your account may also be taken. I will revisit these questions in approximately seven (7) days. Please note that the recommended minimum for an "Easy" question is 50 points.

http://www.experts-exchange.com/jsp/qShow.jsp?ta=dbgen&qid=20114642
http://www.experts-exchange.com/jsp/qShow.jsp?ta=cprog&qid=20230685
http://www.experts-exchange.com/jsp/qShow.jsp?ta=cprog&qid=20132875
http://www.experts-exchange.com/jsp/qShow.jsp?ta=cprog&qid=20132874
http://www.experts-exchange.com/jsp/qShow.jsp?ta=cprog&qid=20109111
http://www.experts-exchange.com/jsp/qShow.jsp?ta=cprog&qid=20107544
http://www.experts-exchange.com/jsp/qShow.jsp?ta=cplusprog&qid=20108062
http://www.experts-exchange.com/jsp/qShow.jsp?ta=cplusprog&qid=20107545
http://www.experts-exchange.com/jsp/qShow.jsp?ta=java&qid=20189956
http://www.experts-exchange.com/jsp/qShow.jsp?ta=mfc&qid=20175490
http://www.experts-exchange.com/jsp/qShow.jsp?ta=mfc&qid=20120763
http://www.experts-exchange.com/jsp/qShow.jsp?ta=mfc&qid=20120762

EXPERTS: Please leave your thoughts on this question here.

Thanks,

Netminder
Community Support Moderator
Experts Exchange
0
 
NetminderCommented:
Force/accepted by

Netminder
Community Support Moderator
Experts Exchange
0
All Courses

From novice to tech pro — start learning today.