Professional Documents
Culture Documents
Koneksi Program C Ke SQL Server Dari Linux
Koneksi Program C Ke SQL Server Dari Linux
Koneksi Program C Ke SQL Server Dari Linux
http://www.intelmenu.com/notes/c/c_odbc.html
Persiapan :
[rhel7.9-dvd]
Name=RHEL-$releasever-DVD
Baseurl= file:///media/
gpgcheck=0
enabled=1
unixODBC-devel harus diinstal karena koneksi ke database server memerlukan sejumlah file header
yaitu : sql.h, sqlext.h, sqltypes.h
Instalasi unixODBC & unixODBC-devel selesai
Ada 2 tipe konfigurasi DSN yaitu : level sistem & level user
A. Membuat DSN Di Level Sistem
Konfigurasi ini berlaku untuk semua user. Buat file baru : vim /etc/odbc.ini dengan isi sbb :
Konfigurasi ini berlaku untuk 1 user saja, yaitu user yang sedang login dan sudah melakukan konfigurasi
tsb. Buat file baru di folder home user yang bersangkutan :
Field : Nama kolom, tipe data & atribut2 lainnya sesuai gambar
#include <stdio.h>
#include <string.h>
#include <sql.h>
#include <sqlext.h>
#include <sqltypes.h>
int main() {
RETCODE retcode;
UCHAR szDSN[SQL_MAX_DSN_LENGTH+1] =
"SQL_SERVER_2008_ENTERPRISE";
(SQLPOINTER)SQL_OV_ODBC3,
SQL_IS_INTEGER);
szUID, (SWORD)strlen(szUID),
szAuthStr, (SWORD)strlen(szAuthStr));
(retcode != SQL_SUCCESS_WITH_INFO) ) {
else {
/* Clean up. */
SQLDisconnect(hdbc1);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc1);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return 0;
}
2. Setting linker di CodeBlocks 20.03
Contoh Lain
Tulis kode sbb :
#include <stdio.h>
#include <string.h>
#include <sql.h>
#include <sqlext.h>
SQLRETURN rc;
hdbc = NULL;
henv = NULL;
SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT,
(SQLPOINTER) 5, 0);
if(rc == SQL_SUCCESS || rc ==
SQL_SUCCESS_WITH_INFO) {
return 1;
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
hdbc = NULL;
henv = NULL;
return 0;
int ODBCDisconnectDB() {
if(hdbc) {
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
if(henv) {
SQLFreeHandle(SQL_HANDLE_ENV, henv);
hdbc = NULL;
henv = NULL;
return 1;
SQLHSTMT hstmt;
SQLRETURN rc;
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
return 0;
int db_fetch() {
SQLRETURN r;
SQLHSTMT hstmt;
SQLCHAR sql[256];
SQLINTEGER n;
SQLINTEGER id;
SQLCHAR name[20];
SQLREAL age;
SQL_DATE_STRUCT birthday;
SQL_TIMESTAMP_STRUCT create_timestamp;
if(hdbc == NULL || henv == NULL) { return 0; }
if(r != SQL_SUCCESS) {
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
return 0;
while(1) {
r = SQLFetch(hstmt);
else if(SQL_NO_DATA == r) {
break;
else {
break;
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
return 0;
void main() {
ODBCConnectDB("SQL_SERVER_2008_ENTERPRISE", "testermin1",
"J@karta3");
db_fetch();
ODBCDisconnectDB();
Begitu program dijalankan, data akan disimpan di SQL Server 2008 dan program akan menampilkan data
dari kolom id & name. Hasilnya di bawah ini :
Cek data yang masuk ke database