Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 491
  • Last Modified:

Database connectivity Through VC++

i want to insert data,retrive data,delete data and updata data into my database using VC++.Please give sample code for the same.i have used VC++ but i have never done database connectivity using VC++.
0
mmamta
Asked:
mmamta
  • 3
  • 2
1 Solution
 
WynCommented:
What kind of database you want?
0
 
mmamtaAuthor Commented:

SQL sever 7.0
0
 
JMuCommented:
I think that the points are not big enough for this kind of question, but here is the code anyway. I suppose you need ODBC code. This is NOT MFC stuff.

class CDemoODBC
{
      public:
            CDemoODBC();
            ~CDemoODBC();

            bool Init();

            bool ConnectToDatabase( const char* dataSourceName, const char* databaseUser, const char* databasePassword );
            void DisconnectFromDatabase();

            bool Save( const char* paino, const char* halkaisija );

      protected:
      private:
            CDemoODBC( const CDemoODBC& copyFrom );
            CDemoODBC& operator=( const CDemoODBC& copyFrom );

            void Close();

      // data
      public:
      protected:
      private:
            HENV envHandle;
            HDBC connHandle;
            bool connectedODBC;
            HSTMT statementHandle;
};



CDemoODBC::CDemoODBC()
:      envHandle( SQL_NULL_HENV ),
      connHandle( SQL_NULL_HDBC ),
      connectedODBC( false ),
      statementHandle( SQL_NULL_HSTMT )
{
}

CDemoODBC::~CDemoODBC()
{
      DisconnectFromDatabase();

      Close();
}

// -------------------------------------

bool CDemoODBC::Init()
{
      if ( ::SQLAllocEnv( &envHandle ) == SQL_SUCCESS )
      {
            if ( ::SQLAllocConnect( envHandle, &connHandle ) == SQL_SUCCESS )
            {
                  ::SQLSetConnectOption( connHandle, SQL_LOGIN_TIMEOUT, 5 );

                  return true;
            }
      }

      return false;
}

void CDemoODBC::Close()
{
      if ( connHandle != SQL_NULL_HDBC )
      {
            ::SQLFreeConnect( connHandle );
            connHandle = SQL_NULL_HDBC;
      }

      if ( envHandle != SQL_NULL_HENV )
      {
            ::SQLFreeEnv( envHandle );
            envHandle = SQL_NULL_HENV;
      }
}

bool CDemoODBC::ConnectToDatabase( const char* dataSourceName, const char* databaseUser, const char* databasePassword )
{
      RETCODE rc = ::SQLConnect( connHandle,
            (UCHAR*)dataSourceName, SQL_NTS,
            (UCHAR*)databaseUser, SQL_NTS,
            (UCHAR*)databasePassword, SQL_NTS );

      if ( rc == SQL_SUCCESS || rc == SQL_SUCCESS_WITH_INFO )
      {
            connectedODBC = true;

            if ( ::SQLAllocStmt( connHandle, &statementHandle ) == SQL_SUCCESS )
                  return true;
      }

      return false;
}

void CDemoODBC::DisconnectFromDatabase()
{
      if ( statementHandle != SQL_NULL_HSTMT )
      {
            ::SQLFreeStmt( statementHandle, SQL_DROP );
            statementHandle = SQL_NULL_HSTMT;
      }

      if ( connectedODBC )
      {
            ::SQLDisconnect( connHandle );
            connectedODBC = false;
      }
}

bool CDemoODBC::Save( const char* paino, const char* halkaisija )
{
      SDWORD painoLen = SQL_NTS;
      SDWORD halkaisijaLen = SQL_NTS;

      if ( ::SQLPrepare( statementHandle,
            (unsigned char*)"INSERT INTO Painojono "
            "(Pvmklo, Paino, Halkaisija) "
            "VALUES "
            "(GetDate(), ?, ?)", SQL_NTS ) == SQL_SUCCESS )
      {
            if ( ::SQLBindParameter( statementHandle, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_FLOAT, 0, 0, (char*)paino, 0, &painoLen ) == SQL_SUCCESS )
            {
                  if ( ::SQLBindParameter( statementHandle, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_FLOAT, 0, 0, (char*)halkaisija, 0, &halkaisijaLen ) == SQL_SUCCESS )
                  {
                        if ( ::SQLExecute( statementHandle ) == SQL_SUCCESS )
                        {
                              if ( ::SQLTransact( envHandle, SQL_NULL_HSTMT, SQL_COMMIT ) == SQL_SUCCESS )
                                    return true;
                        }
                  }
            }
      }

      return false;
}

JMu
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
mmamtaAuthor Commented:
JMU

thnaks for your reply but can you send the code with some explanation then it will be easy for me to understand and also can you send the code with sample database and .cpp or .c file  at my email address mayanks@vsnl.com
0
 
mmamtaAuthor Commented:
With 'c' i have connected the database using ODBC i would like to connect to database using VC++ and that is MFC class please send the sample code for the same along with sample database which will be easy for me to understand.

Thnaks
Mayank
mayanks@vsnl.com
0
 
JMuCommented:
OK. I'll send them when I go home. Please, wait few hours.

JMu
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now