Database di C++ bisa memakai SQLite

 

SQLite Database Browser

Image via Wikipedia

 

Browsing – browsing, eh nemuin tutorial yang bagus, Database C++ SQLite. Jadi dengan ini kita bisa lebih mudah lagi jika ingin membuat aplikasi database berbasis C++. Yang dibutuhkan selain kemampuan Prmograman C++ adalah SQLite nya sendiri, jika pengen download SQLite bisa melalui link berikut http://www.sqlite.org/download.html

Pengenalan
SQLite adalah mesin SQL database tertanam. Tidak seperti kebanyakan database SQL lainnya, SQLite tidak memiliki proses server yang terpisah, melainkan membaca dan menulis secara langsung ke file disk biasa. Hal ini membuat SQLite solusi mudah dan baik untuk menyimpan data untuk aplikasi Anda.

Membuka Database
Hal pertama yang perlu Anda lakukan, adalah membuka database. Jika database belum ada, maka akan dibuat.

sqlite3 *database;
sqlite3_open("Database.sqlite", &database);

Argumen pertama adalah nama file, yang kedua adalah database sqlite3 menangani. Jika semuanya berjalan benar, maka akan tampil SQLITE_OK. Setelah database dibuka, Anda dapat mulai melakukan sesuatu. Kode berikut menunjukkan salah satu contohnya :

sqlite3_stmt *statement;

	if(sqlite3_prepare_v2(database, "CREATE TABLE a (b INTEGER, c INTEGER);", -1, &statement, 0) == SQLITE_OK)
	{
		int cols = sqlite3_column_count(statement);
		int result = 0;
		while(true)
		{
			result = sqlite3_step(statement);

			if(result == SQLITE_ROW)
			{
				for(int col = 0; col < cols; col++)
				{
					string s = (char*)sqlite3_column_text(statement, col);
					//do something with it
				}
			}
			else
			{
				break;
			}
		}

		sqlite3_finalize(statement);
	}

Hal pertama yang harus Anda lakukan adalah mempersiapkan laporan menggunakan sqlite3_prepare_v2 (). Kemudian kita harus menjalankan statement menggunakan sqlite3_step(). Fungsi ini akan mengembalikan nilai yang kita perlu untuk menentukan tindakan selanjutnya. Kemudian kita harus mengetahui jumlah kolom yang ada. Kita bisa melakukan ini dengan menggunakan sqlite3_column_count(). Lalu yang harus kita lakukan setelahnya adalah mengambil value dari kolom tersebut menggunakan sqlite3_column_text().
Untuk menutup koneksi database yang telah terbuka, Anda bisa gunakan sintaks “sqlite3_close(database);

Contoh

#include "Database.h"
#include <iostream>

Database::Database(char* filename)
{
	database = NULL;
	open(filename);
}

Database::~Database()
{
}

bool Database::open(char* filename)
{
	if(sqlite3_open(filename, &database) == SQLITE_OK)
		return true;

	return false;
}

vector<vector<string> > Database::query(char* query)
{
	sqlite3_stmt *statement;
	vector<vector<string> > results;

	if(sqlite3_prepare_v2(database, query, -1, &statement, 0) == SQLITE_OK)
	{
		int cols = sqlite3_column_count(statement);
		int result = 0;
		while(true)
		{
			result = sqlite3_step(statement);

			if(result == SQLITE_ROW)
			{
				vector<string> values;
				for(int col = 0; col < cols; col++)
				{
					values.push_back((char*)sqlite3_column_text(statement, col));
				}
				results.push_back(values);
			}
			else
			{
				break;
			}
		}

		sqlite3_finalize(statement);
	}

	string error = sqlite3_errmsg(database);
	if(error != "not an error") cout << query << " " << error << endl;

	return results;
}

void Database::close()
{
	sqlite3_close(database);
}

Kemudian, untuk file Database.h nya adalah sebagai berikut :

#ifndef __DATABASE_H__
#define __DATABASE_H__

#include <string>
#include <vector>
#include <sqlite3.h>

using namespace std;

class Database
{
public:
	Database(char* filename);
	~Database();

	bool open(char* filename);
	vector<vector<string> > query(char* query);
	void close();

private:
	sqlite3 *database;
};

#endif

Kemudian, untuk implementasi dari source code diatas agar bisa digunakan adalah sebagai berikut :

#include <iostream>
#include "Database/Database.h"
using namespace std;
Database *db;
db = new Database("Database.sqlite");
db->query("CREATE TABLE a (a INTEGER, b INTEGER);");
db->query("INSERT INTO a VALUES(1, 2);");
db->query("INSERT INTO a VALUES(5, 4);");
vector<vector<string> > result = db->query("SELECT a, b FROM a;");
for(vector<vector<string> >::iterator it = result.begin(); it < result.end(); ++it)
{
	vector<string> row = *it;
	cout << "Values: (A=" << row.at(0) << ", B=" << row.at(1) << ")" << endl;
}
db->close();

Yaph, sekian ilmu yang saya dapat dari http://www.dreamincode.com/ :mrgreen:

3 thoughts on “Database di C++ bisa memakai SQLite

Leave a Reply