#native_company# #native_desc#
#native_cta#

Connection interbase client

By gewi
on July 29, 2003

Version: 1.0

Type: Function

Category: Databases

License: Other

Description: connection to interbase server with Borland 5.02 api

#include <windows.h>
#include <windowsx.h>
#include <commdlg.h>
#include <stdio.h>
#include <ibase.h>



extern pr_error(long ISC_FAR *status, char ISC_FAR *operation);


typedef struct {
    char            userName[50];
    char            password[50];
    char            dbName[50];
    isc_db_handle   dbHandle;
    isc_tr_handle   transHandle;
    ISC_STATUS      status_vector[20];
    char            dpb_buffer[256], *dpb;
    short           dpb_length;
}InterParams, FAR * LPINTERPARAMS;




createDatabase(LPINTERPARAMS lpi)
{
    long            status[20];            /* status vector */
    long            sqlcode;               /* SQLCODE  */
    char            create_db[255];

    memset(create_db,0,sizeof(create_db));
    sprintf(create_db, "CREATE DATABASE '%s' USER '%s' PASSWORD '%s'", lpi->dbName,lpi->userName,lpi->password);



    if (isc_dsql_execute_immediate(lpi->status_vector, &lpi->dbHandle, &lpi->transHandle, 0, create_db, 1,
                                   NULL))
    {
        /* Extract SQLCODE from the status vector. */
        sqlcode = isc_sqlcode(lpi->status_vector);

        /* Print a descriptive message based on the SQLCODE. */
        if (sqlcode == -902)
        {
           MessageBox(GetFocus(),"Bu database zaten mevcut.",lpi->dbName,MB_ICONSTOP);
           return FALSE;
        }

        /* In addition, print a standard error message. */
        if (pr_error(status, "create database"))
            return FALSE;
    }

    isc_detach_database(status, &lpi->dbHandle);




   return TRUE;
}





connectDatabase(LPINTERPARAMS lpi)
{
 ISC_STATUS status_vector[20];
 char *p;

 lpi->dpb = lpi->dpb_buffer;
 *lpi->dpb++ = isc_dpb_version1;
 *lpi->dpb++ = isc_dpb_user_name;
 *lpi->dpb++ = strlen(lpi->userName);

    for (p = lpi->userName; *p;)
		*lpi->dpb++ = *p++;
		*lpi->dpb++ = isc_dpb_password;
		*lpi->dpb++ = strlen(lpi->password);
    for (p = lpi->password; *p;)
		*lpi->dpb++ = *p++;

     lpi->dpb_length = lpi->dpb - lpi->dpb_buffer;

     isc_attach_database(status_vector,0,lpi->dbName,&lpi->dbHandle,lpi->dpb_length,lpi->dpb_buffer);

		if (status_vector[0] == 1 && status_vector[1]){
			isc_print_status (status_vector);
			return FALSE;
		}


  return TRUE;
}






sendSQLCommand(LPINTERPARAMS lpi,LPSTR tableStr)
{

 ISC_STATUS status_vector[20];
 char ISC_FAR *create_tbl  = "CREATE TABLE deneme(adi varchar(30))";



   lstrcpy(create_tbl,tableStr);

    isc_start_transaction(status_vector, &lpi->transHandle, 1, &lpi->dbHandle,0,NULL);


    if (isc_dsql_execute_immediate(status_vector, &lpi->dbHandle, &lpi->transHandle, 0, create_tbl, 1, NULL))
        if (pr_error(status_vector, tableStr)){
            return FALSE;
        }

    isc_commit_transaction(status_vector, &lpi->transHandle);


   return TRUE;
}







createDenemeDatabase()
{
 InterParams   inter;
 int i;
 char ISC_FAR *create_tbl;


 char buf1[100];
 char buf[2000];


memset(buf,0,sizeof(buf));


    memset(&inter,0,sizeof(inter));


    inter.dbHandle=NULL;
    inter.transHandle=NULL;

    lstrcpy(inter.dbName,"C:WINDOWSDESKTOPDENEME2.GDB");
    lstrcpy(inter.userName,"SYSDBA");
    lstrcpy(inter.password,"masterkey");



     if(!createDatabase(&inter)){
       MessageBox(GetFocus(),"database cerate errorr","",MB_OK);
     }else {
       MessageBox(GetFocus(),"database cerate okay","",MB_OK);
     }


     if(!connectDatabase(&inter)){
       MessageBox(GetFocus(),"error connection","",MB_OK);
     }else {
       MessageBox(GetFocus(),"connection okay","",MB_OK);
     }





  return TRUE;
}