C++ e MySQL++

5 settembre 2009

Per poter utilizzare la libreria MySQL++ su ubuntu è necessario installare i seguenti pacchetti:

– libmysql++2c2a
– libmysql++-dev

per la compilazione bisogna eseguire la riga:

g++ file_inp.cpp -o file_out -I/usr/include/mysql++/ -I/usr/include/mysql -L/usr/local/lib -lmysqlpp -lmysqlclient -lnsl -lz -lm

L’ho provato sul seguente codice:


#include <mysql++.h>
#include <iostream>
#include <iomanip>
using namespace std;
int main(int argc, char *argv[])
{
const char *db = "nome_database", *server = "server_db", *user = "nome_utente", *pass = "password";
// Connect to the sample database.
mysqlpp::Connection conn(false);

conn = conn.connect(db, server, user, pass);

// Retrieve a subset of the sample stock table set up by resetdb
mysqlpp::Query query = conn.query();
query << “select item from cliente”;
mysqlpp::Result res = query.store();
// Display the result set
cout << “We have:” << endl;
if (res) {
mysqlpp::Row row;
mysqlpp::Row::size_type i;
for (i = 0; row = res.at(i); ++i) {
cout << ‘\t’ << row.at(0) << endl;
}
}
else {
cerr << “Failed to get item list: ” << query.error() << endl;
return 1;
}
return 0;
}

In caso di problemi rimando a

http://tangentsoft.net/mysql++/
e
http://tangentsoft.net/mysql++/doc/

http://www.cyberciti.biz/tips/linux-unix-connect-mysql-c-api-program.html


Ruby e MySQL

5 settembre 2009

Per poter accedere a MySQL da Ruby è necessario installare il modulo mysql con il comando

sudo gem install mysql

(Se non funziona provate a installare libdbd-mysql-ruby e libmysql-ruby in base alla vostra versione di Ruby dal repository)

Per utilizzare la “gemma” si usa require "mysql"

Esempio completo:


#!/usr/bin/ruby -w
# simple.rb - simple MySQL script using Ruby MySQL module

require "mysql"

begin
# connect to the MySQL server
dbh = Mysql.real_connect("localhost", "nome_utente", "password", "nome_database")
# get server version string and display it
puts "Server version: " + dbh.get_server_info
rescue Mysql::Error => e
puts "Error code: #{e.errno}"
puts "Error message: #{e.error}"
puts "Error SQLSTATE: #{e.sqlstate}" if e.respond_to?("sqlstate")
ensure
# disconnect from server
dbh.close if dbh
end

Riferimenti:

http://www.kitebird.com/articles/ruby-mysql.html
http://www.ruby-lang.org/en/documentation/
http://www.ruby-doc.org/


Python e MySQL

5 settembre 2009

Per poter accedere a MySQL da Python occorre installar l’API python-mysqldb

poi aggiungere la riga import MySQLdb

Esempio completo:


#!/usr/bin/env python
# periodi.py

import sys
import MySQLdb

conn = MySQLdb.connect(host="localhost", user="nome_utente", passwd="password", db="nome_database")

cursore = conn.cursor()

cursore.execute('SELECT * FROM cliente')

tupla = cursore.fetchall()

print
print 'codice cliente\tpartita IVA\tragione sociale'
print '-------------------------------------------------'
for record in tupla:
print '%d\t\t%s\t%s' % (record[0], record[1], record[2])

print 'end.'
print

Riferimenti:

http://www.kitebird.com/articles/pydbapi.html
http://mysql-python.sourceforge.net/MySQLdb.html
http://www.blackbirdblog.it/programmazione/python/python-e-mysql
http://docs.python.org/contents.html


JDBC, come accedere ad un database da Java

5 settembre 2009

Premetto che io dispongo del JDK 1.6.0_14 della Sun installato in /usr/lib/jvm/java-6-sun-1.6.0.14 sulla mia Ubuntu e del database MySQL 5.0.51a e che farò riferimento a questi strumenti per la mia guida.

Per poter accedere al database da Java è necessario scaricare il driver di MySQL da qui.

Estrarre il file tar.gz con il comando tar zxfv mysql-connector-java-5.1.8.tar.gz (cambiate i numeri 5.1.8 in base alla versione del driver che avete scaricato).

Dopo di ciò bisogna copiare il driver nella directory /usr/lib/jvm/java-6-sun-1.6.0.14/jre/lib/ext

sudo cp mysql-connector-java-5.1.8-bin.jar /usr/lib/jvm/java-6-sun-1.6.0.14/jre/lib/ext

e modificare la variabile di sistema CLASSPATH:

export CLASSPATH=$CLASSPATH:mysql-connector-java-5.1.8-bin.jar

Anche se sinceramente ho visto che a me funziona anche settare suddetta variabile.

Ora bisogna passare al codice:

Aggiungiamo il package import java.sql.*;

poi le variabili

Connection con = null;
Statement st = null;
ResultSet rs = null;

Aggiungiamo ora il driver con la riga

Class.forName("com.mysql.jdbc.Driver");
o esclusivamente la riga
DriverManager.registerDriver(new com.mysql.jdbc.Driver());

A questo punto abbiamo il driver, aggiungiamo la connessione:

con = DriverManager.getConnection("jdbc:mysql://localhost/nome_database", "nome_utente", "password");

Se il database non ha password si può utilizzare la funzione:

con = DriverManager.getConnection("jdbc:mysql://localhost/nome_database");

Per eseguire le query abbiamo bisogno di uno statement, quindi:

st = con.createStatement();

Ora per eseguire effettivamente la query si utilizza la riga

rs = st.executeQuery("select * from cliente");

e per vedere i risultati:

while (rs.next())
{
System.out.println("Codice cliente: " + rs.getString(1));
System.out.println("Partita IVA: " + rs.getString(2));
System.out.println("Ragione sociale: " + rs.getString(3));
System.out.println(" ");
}

Quando abbiamo finito con il database chiudiamo la connessione:

con.close();

Un esempio completo lo si trova di seguito:


mport java.sql.*;

public class DBConn
{

public static void main(String args[])
{
new DBConn();
}

public DBConn()
{
Connection con = null;
Statement st = null;
ResultSet rs = null;

try
{
//Class.forName("com.mysql.jdbc.Driver");
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
}/*catch(ClassNotFoundException e)
{
System.out.println("Errore: " + e.getException().getMessage());
System.exit(1);
}*/catch(SQLException e)
{
System.out.println("Errore : " + e.getSQLState());
System.exit(1);
}

try
{
con = DriverManager.getConnection("jdbc:mysql://localhost/cremonesi", "michele", "hellasverona");
}catch(SQLException e)
{
System.out.println("Errore : " + e.getSQLState());
System.exit(1);
}

try
{
st = con.createStatement();
}catch(SQLException e)
{
System.out.println("Errore : " + e.getSQLState());
System.exit(1);
}

try
{
rs = st.executeQuery("select * from cliente");
}catch(SQLException e)
{
System.out.println("Errore : " + e.getSQLState());
System.exit(1);
}

System.out.println();
try
{
while (rs.next())
{
System.out.println("Codice cliente: " + rs.getString(1));
System.out.println("Partita IVA: " + rs.getString(2));
System.out.println("Ragione sociale: " + rs.getString(3));
System.out.println(" ");
}
}catch(SQLException e)
{
System.out.println("Errore : " + e.getSQLState());
System.exit(1);
}

try
{
con.close();
}catch(SQLException e)
{
System.out.println("Errore : " + e.getSQLState());
System.exit(1);
}

}
}

Risorse:

http://dev.mysql.com/usingmysql/java/
http://www.soft-land.org/articoli/jdbc


Importare un file CSV in MySQL

17 agosto 2009

Per importare dati da un file csv (Comma Separated Values) a una tabella Mysql, dobbiamo far uso della query SQL

LOAD DATA LOCAL INFILE 'nome_file_csv' INTO TABLE nome_tabella
   FIELDS TERMINATED BY ";" LINES TERMINATED BY "\r\n" IGNORE 1 LINES;

L’opzione FIELDS TERMINATED BY “;” indica il carattere separatore tra un campo e l’altro, LINES TERMINATED BY “\r\n” indica come viene indicato l'”a capo” nel file, solitamente se proviene da ambiente Windows si usa “\r\n”, se proviene da sistemi Unix like si usa “\n”, IGNORE 1 LINES indica quante righe de saltare prima di inserire i dati, in questo caso una perché si suppone che in testa ci siano i nomi dei campi.

Facciamo un esempio di file .csv e un esempio di tabella mysql.

Supponiamo che il file csv sia composto da 3 campi: nome, cognome, indirizzo:

“nome”;”cognome”;”indirizzo”
“gino”;”gini”;”via dei platani 8″
“luigi”;”rossi”;”via dei pini 3″

La tabella potrebbe essere del tipo:

CREATE TABLE anagrafica (
id int(3) NOT NULL auto_increment PRIMARY KEY,
nome varchar(100) default NULL,
cognome varchar(150) default NULL,
indirizzo varchar(150) default NULL
)ENGINE=MyISAM;

Se vogliamo far uso di uno script PHP che carica i dati dal file csv “dati.csv” dovrà essere:

<?
// Dichiaro le variabili per la connessione al database
$server="nome_server";
$user="nome_user";
$passwd="password";
$database="nome_DB";

// Mi connetto al server Mysql e seleziono il DB da usare
$db = @mysql_connect($server, $user, $passwd);
@mysql_select_db($database);

// Creo una variabile con il file CSV Mda importare
$CSV_file = "dati.csv";

// Eseguo la query per l'importazione
mysql_query("LOAD DATA LOCAL INFILE '" . $CSV_file . "' INTO TABLE mia_tabella
 FIELDS TERMINATED BY ";" LINES TERMINATED BY "\\r\\n" IGNORE 1 LINES;');

// Chiudo la connessione al DB
mysql_close($db);
?>