Post con tag Database

Connettersi ad un database Oracle con Java

La modalità di connessione ad un database Oracle in Java è la stessa presentata in questo articolo.
Verranno infatti utilizzare le stesse classi, con l’aggiunta della classe java.sql.ResultSetMetaData per ottenere i metadati della tabella.
L’unica differenza riguarda la stringa di connessione. La sua forma è la seguente:

jdbc:oracle:<drivertype>:<username/password>@<database>

Il tipo di driver utilizzato in questo esempio è il driver thin. username e password, ovviamente, rappresentano le credenziali per l’accesso al database.
La parte database può assumere una di queste due forme (per il driver thin):

<host>:<port>:<SID>
//<host>:<port>/<service>

Tali dati sono recuperabili aprendo il file tnsnames.ora. Nel mio caso, il database gira in locale sulla porta 1521 e sia il SID che il service è XE.

Il sito dell’Oracle riporta questa frase, riguardo l’utilizzo della stringa che riporta il servizio:

We strongly encourage everyone to transition from SIDs to services as quickly as possible as SIDs will be cease to be supported in one of the next few releases of the database.

Per questo motivo, verrà utilizzata la seconda forma.

Continua >

C++ e SQLite: primo esempio

Il seguente esempio mostra, molto velocemente, come utilizzare le principali funzioni delle API di SQLite in C/C++:

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

using namespace std;

void fill(string queries[5])
{
	queries[0] = "DROP TABLE IF EXISTS persone";
	queries[1] = "CREATE TABLE persone (id int, nome text)";
	queries[2] = "INSERT INTO persone (id, nome) values (1, 'antonio')";
	queries[3] = "INSERT INTO persone (id, nome) values (2, 'marco')";
	queries[4] = "SELECT id, nome FROM persone";
}

int main()
{
	sqlite3* conn;
	sqlite3_stmt* result;
	string queries[5];
	fill(queries);

	sqlite3_open("C:/db.sqlite", &conn);

	for(int i = 0; i < 4; i++)
	{
		char* errMsg = new char[1024];
		int retv;
		cout << queries[i] << endl;
		if( (retv = sqlite3_exec(conn, queries[i].c_str(), 0, 0, &errMsg)) !=
			SQLITE_OK)
		{
			cout << errMsg << " - ErrCode: " << retv << endl;
			delete errMsg;
			return -1;
		}

		delete [] errMsg;
	}

	sqlite3_prepare_v2(conn, queries[4].c_str(), queries[4].size(), &result, NULL);

	while(sqlite3_step(result) == SQLITE_ROW)
	{
		cout << sqlite3_column_int(result, 0) << "\t"
			<< sqlite3_column_text(result, 1) << endl;
	}

	sqlite3_finalize(result);
	sqlite3_close(conn);
}

Python e Sqlite: un primo esempio

SQLite è una libreria C che permette di utilizzare un database senza che ci sia un processo server che gestisca le richieste.
In genere viene creato un file contenente il database che può essere interrogato per ottenere i dati.
In Python la gestione avviene tramite il modulo sqlite3.
Solitamente, nel più semplice dei casi, si passa attraverso quattro step:

  • connessione
  • creazione di un cursore
  • esecuzione/fetch dei dati
  • chiusura connessione

Continua >