C++ Class ADO Connection
C++ Class ADO Connection

C++ Class Ado Connection ? Tahukah anda ?

C++ Class ADO Connection Database adalah class yang di gunakan untuk mengakses data atau memanipulasi data dalam sebuah aplikasi.

Artikel ini sangat penting untuk seorang programmer khusunya c++, bagaimana tidak? Setiap aplikasi membutuhkan akses data untuk memanipulasi data atau mengolah data informasi yang di butuhkan, Selanjutnya, selain itu tutorial mengenai class koneksi database dengan bahasa c++ itu sangat jarang kita temui, mungkin karena peminat bahasa ini sangat sedikit jika di bandingkan bahasa lain.

Baca : Belajar C++ Class, Tutorial backup database dengan batchfile

Atas dasar itu saya ingin berbagi pengalaman saya dalam hal bahasa pemrograman khususnya c++.

Berikut ini saya akan mengajak teman – teman untuk untuk mengingat atau belajar membuat C++ class ADO connection database menggunakan database SQL Server (MSSQL). Sebelum ke materi utama, mari kita ulas beberapa hal berikut :

Isi Artikel

Pengertian ActiveX Data Object (ADO)

ActiveX Data Object (ADO) Adalah komponen standar microsoft untuk akses data, digunakan untuk mengakses berbagai sumber database, termasuk seperti Ms Access dan Sql Server (MSSQL)

ADO Objects and Collections

Objects koneksi adalah menyimpan informasi tentang sesion, dan menyediakan metode untuk menghubungkan ke penyimpanan data. Sedangkan Collection dapat digunakan baik dalam objek Recordset atau dalam objek Record

Berikut adalah macam – macam ADO Objects and Collections :

Object

  1. Connection
  2. Command
  3. Recordset
  4. Record
  5. Stream
  6. Parameter
  7. Field
  8. Property
  9. Error

Collections

  1. Fields
  2. Properties
  3. Parameters
  4. Error

Selanjutnya dari penjelasan diatas dapat kita simpulkan bahwa tujuan dan Cara kerja ADO adalah Membuat koneksi – Eksekusi perintah – manipulasi data

Baca juga : Tutorial C++PHPJavaScript

Contoh C++ Class Ado Connection

Berikut ini adalah contoh bagaimana cara membuat class ADO dengan menggunakan bahasa C++, dan berikut adalah langkah – langkahnya:

  1. Buatlah database dengan nama MYDB kemudian buatlah table dengan nama Test.
  2. Kemudian Buatlah file header seperti pada script berikut ini dan berikan nama ADO.h

#if !defined(AFX_ADO_H__A1209526_71B7_45EC_A72A_9FB2484AE714__INCLUDED_)
#define AFX_ADO_H__A1209526_71B7_45EC_A72A_9FB2484AE714__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "StdAfx.h"

class CADO 
{
public:

void* SQLExcute(char *szSQL);
BOOL SQLDelete(char *szTableName, char *szWhere);
BOOL SQLUpdate(char* szTableName, char* szSet, char* szWhere);
_RecordsetPtr CADO::SQLSelect(char *fieldStmt,char *szTableName,char *WhereStmt);
BOOL SQLInsert(char* szQuery);
BOOL SQLInsert(char* szTableName, char* szValues);
_RecordsetPtr CADO::SQLstr();
BOOL DisConnect();
BOOL Connect(char* szDBServerIP, char* szDBName, char* szUserID, char* szUserPW);
BOOL isStatus();

CADO();
virtual ~CADO();

private:
BOOL m_bIsConnected;
HRESULT m_hresult;
_ConnectionPtr m_pConn;
_RecordsetPtr m_pRset;
};

#endif // !defined(AFX_ADO_H__A1209526_71B7_45EC_A72A_9FB2484AE714__INCLUDED_)

3. Kemudian langkah ke tiga buatlah file cpp (ADO.cpp) kemudian buatlah script seperti dibawah ini :

#include "stdafx.h"
#include "ADO.h"

CADO::CADO()
{
 m_pConn = NULL;
 m_bIsConnected = NULL;
 m_pRset = NULL;
 m_hresult = S_OK;
}

CADO::~CADO()
{
 if(m_bIsConnected)
 {
  m_pConn->Close();
     CoInitialize(NULL);
 }
}
//***************************************************************//

BOOL CADO::Connect(char *szDBServerIP, char *szDBName, char *szUserID, char *szUserPW)
{
 if(m_bIsConnected)
 {
  printf("DB is already connected!\n");
  return TRUE;
 }

char szCon[256];
memset(szCon, 0x00, sizeof(szCon));

sprintf(szCon, "Provider=SQLOLEDB;Data Source=%s; Initial catalog=%s;User ID=%s;Password=%s;", szDBServerIP, szDBName, szUserID, szUserPW);

 //Initialize the COM Library
CoInitialize(NULL);
m_hresult = m_pConn.CreateInstance((__uuidof(Connection)));

 if(FAILED(m_hresult))
 {
  printf("Error instantiating Connection object\n");
  CoUninitialize();
  return FALSE;
    }

 m_hresult = m_pConn->Open(szCon,"","",0);
 if(FAILED(m_hresult))
 {
  printf("Error Opening Database object using ADO _ConnectionPtr\n");
  CoUninitialize();

  return FALSE;
 }
 m_bIsConnected = TRUE;
 return TRUE;
}

//***************************************************************//

BOOL CADO::DisConnect()

{
 if(!m_bIsConnected)
 {
  printf("DB is already disconnected!\n");
  return TRUE;
 }

 m_pConn->Close();
 CoUninitialize();
 m_bIsConnected = FALSE;
 return TRUE;
}

//***************************************************************//

BOOL CADO::SQLInsert(char* szTableName, char* szValues)
{
 if(!m_bIsConnected)
 {
  printf("DB is disconnected!\n");
  return FALSE;
 }
 try
    {
  char szSQL[256];
  memset(szSQL, 0x00, sizeof(szSQL));
  sprintf(szSQL, "Insert into %s Values(%s)", szTableName, szValues);

  //Execute the insert statement
  m_pConn->Execute(szSQL,NULL,adExecuteNoRecords);
 }
    catch(...)
    {
  return FALSE;
    }
 return TRUE;
}

//***************************************************************//

BOOL CADO::SQLInsert(char* szSQL)
{
 if(!m_bIsConnected)
 {
  printf("DB is disconnected!\n");
  return FALSE;
 }
 try
    {

  //Execute the insert statement
  m_pConn->Execute(szSQL,NULL,adExecuteNoRecords);
 }

    catch( ... )
    {
  return FALSE;
    }
 return TRUE;
}

//***************************************************************//

_RecordsetPtr CADO::SQLSelect(char *fieldStmt,char *szTableName,char *WhereStmt)
{
 if(!m_bIsConnected)
 {
  printf("DB is disconnected!\n");
  return 0;
 }
 try
    {
  char szSQL[256];
  memset(szSQL, 0x00, sizeof(szSQL));
  //sprintf(szSQL, "select * from %s", szTableName );
  sprintf( szSQL, "SELECT %s FROM %s WHERE %s", fieldStmt, szTableName, WhereStmt );
m_pRset = m_pConn->Execute(szSQL, NULL, adCmdText);
 }
    catch(...)
    {
     throw;
  return 0;
    }
 return m_pRset;
}

//***************************************************************//

BOOL CADO::SQLUpdate(char *szTableName, char *szSet, char *szWhere)
{
 if(!m_bIsConnected)
 {
  printf("DB is disconnected!\n");
  return FALSE;
 }
 try
    {
  char szSQL[256];
  memset(szSQL, 0x00, sizeof(szSQL));
  sprintf(szSQL, "UPDATE %s set %s where %s", szTableName, szSet, szWhere);
//  m_pConn->BeginTrans();
  m_pConn->Execute(szSQL,NULL,adExecuteNoRecords);
//  m_pConn->CommitTrans();
 }
    catch(...)
    {
  return FALSE;
    }
 return TRUE;
}

//***************************************************************//

BOOL CADO::SQLDelete(char *szTableName, char *szWhere)
{
 if(!m_bIsConnected)
 {
  printf("DB is disconnected!\n");
  return FALSE;
 }
 try
    {
  char szSQL[256];
  memset(szSQL, 0x00, sizeof(szSQL));
  sprintf(szSQL, "DELETE from %s where %s", szTableName, szWhere);

  //m_pConn->BeginTrans();
  m_pConn->Execute(szSQL,NULL,adExecuteNoRecords);
  //m_pConn->CommitTrans();

 }
    catch(...)
    {
  return FALSE;
    }
 return TRUE;
} //***************************************************************//


void* CADO::SQLExcute(char *szSQL)

{

 if(!m_bIsConnected)

 {
  printf("DB is disconnected!\n");
  return 0;
 }
 try
    {
  m_pRset = m_pConn->Execute(szSQL, NULL, adCmdText);
 }
    catch(...)
    {
  return 0;
    }
 return m_pRset;
}


BOOL CADO::isStatus()
{
 return m_bIsConnected;
} 

4. Kemudian Langkah ini adalah membuat Class untuk mengeksekusi class ADO.cpp yang kita buat di atas. Berikut syntax nya :


CADO 3 file main()

#include "ADO.h"
#define DB_SERVER_IP "192.168.0.1"
#define DB_NAME  "MYDB"
#define DB_USER_ID  "admin"
#define DB_USER_PW "password"

int main(int argc, char* argv[])
{
 int nTemp; 
 _RecordsetPtr rs = NULL;

 CADO myADO;
 if(!myADO.Connect(DB_SERVER_IP, DB_NAME, DB_USER_ID, DB_USER_PW))
  printf("Fail to connect\n");
 else
  printf("Connection success\n");
  if(!myADO.SQLInsert("dbo.TEST", "4, 'babo'"))
   printf("Insert Fail\n");
 else
  printf("Effected query successfully\n");

  rs = myADO.SQLSelect("dbo.TEST");
  if(rs==0)
   printf("Select Fail\n");
 else
  nTemp = rs->GetCollect("nNum").intVal;
// else
//  printf("Effected query successfully\n");
  if(!myADO.SQLUpdate("dbo.TEST", "szString='nice'", "nNum=1"))
   printf("Update Fail\n");
 else
  printf("Effected query successfully\n");


  if(!myADO.SQLDelete("dbo.TEST", "nNum=5"))
   printf("Delete Fail\n");
 else
  printf("Effected query successfully\n");

 rs = (_Recordset*)myADO.SQLExcute("select * from dbo.TEST");
 if(rs==0)
   printf("Select Fail\n");
 else
  nTemp = rs->GetCollect("nNum").intVal;
// else
//  printf("Effected query successfully\n");

 if(!myADO.SQLExcute("Insert into dbo.TEST values(100,'lion')"))
   printf("Insert Fail\n");
 else
 printf("Effected query successfully\n");

 if(!myADO.DisConnect())
  printf("Fail to disconnect\n");
 else
  printf("Disconnected\n");
 return 0;
}

Selanjutnya demikian artikel ini, mudah – mudahan bermanfaat bagi pembaca sekalian, jangan lupa untuk bertanya jika ada materi yang kurang jelas. mudah mudahan kita dapat memberikan jawaban yang memuaskan.

Baca : Belajar C++ Class, Tutorial backup database dengan batchfile

Jika blog ini bermanfaat tolong jangan lupa share dan ikuti terus artikel – artikel terbaru dari kami. Harapan saya kita semua sehat selalu dan Terimakasih 🙂