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


C e MySQL

5 settembre 2009

E’ necessario installare il seguente pacchetto libmysqlclient15-dev:

sudo apt-get install libmysqlclient15-dev

e seguire i passi qui descritti:

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

Per la compilazione usare la riga: gcc -o file_out $(mysql_config --cflags) file_in.c $(mysql_config --libs)


C++ e MySQL

5 settembre 2009


// connette a mysql e stampa la prima colonna della tabella selezionata;
#include <stdio.h>
#include <stdlib.h>
#include <mysql.h>
#include <iostream>

using namespace std;

const char* host = “localhost”; // host di connessione
const char* database = “nome_database”; // database di connessione
const char* db_user = “nome_utente”; // nome utente per la connessione
const char* db_pass = “password”; // password non cifrata
const char* query = “select * from cliente”; //comando

int main()
{
MYSQL mysql;
MYSQL_RES* result;
MYSQL_ROW row; // restituisce NULL se non avviene con successo
if (! mysql_init (&mysql)) {
printf (“Errore nella allocazione di memoria.\n”);
exit (EXIT_FAILURE);
}
if (! mysql_real_connect (&mysql, host, db_user, db_pass, “”, 0, NULL, 0))
{
printf (“Errore nella connessione.\n”);
exit (EXIT_FAILURE);
}// restituisce zero se avviene con successo
if (mysql_select_db (&mysql, database))
{
printf (“Errore nella selezione del database.\n”);
exit (EXIT_FAILURE);
}
printf (“Connessione avvenuta.\n”); // esegue la query
if (mysql_query (&mysql, query))
{
printf(“Errore nella query.\n”);
goto error;
}
result = mysql_store_result (&mysql);
cout << “Codice cliente\t” << “Partita IVA\t” << “Ragione sociale\n”;
cout << “———————————————–\n”;
while(( row = mysql_fetch_row(result)) != NULL)
{
cout << row[0] << “\t” << row[1] << “\t” << row[2] << endl;
}
cout << endl;
error:// chiude le risorse
mysql_close (&mysql);
exit (EXIT_SUCCESS);
}

Per compilare si deve usare:

g++ -o file_out $(mysql_config --cflags) file_in.cpp $(mysql_config --libs)

Per utilizzare il MySQL++ non sono ancora riuscito a farlo funzionare, comunque lascio dei riferimenti:

http://forge.mysql.com/wiki/Connector_C%2B%2B
http://dev.mysql.com/tech-resources/articles/mysql-connector-cpp.html
http://tangentsoft.net/mysql++/doc/html/refman/
http://tangentsoft.net/mysql++/doc/html/userman/
http://tangentsoft.net/mysql++/


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


I linguaggi di programmazione più utilizzati

9 aprile 2009

Oggi ho voluto fare una ricerca su quali fossero i linguaggi di programmazione più utilizzati nel mondo e secondo la TIOBE Software ad Aprile 2009 domina il Java, seguito da C e C++.

  1. Java
  2. C
  3. C++
  4. PHP
  5. (Visual) Basic
  6. Python
  7. C#
  8. JavaScript
  9. Perl
  10. Ruby

Per visitare la classifica completa seguite questo link.

Per una classifica degli script utilizzati nel web dalle pubbliche amministrazioni notiamo che al secondo posto troviamo ASP.NET, seguito dal PHP:

  1. Non definito          50.82%      con 3706 hit su 7291
  2. ASP.NET               23.43%      con 1708 hit su 7291
  3. PHP                     16.91%      con 1233 hit su 7291
  4. Servlet                   0.37%      con 27 hit su 7291
  5. JSP                       0.04%       con 3 hit su 7291

Da considerare anche che quanto scritto su TIOBE:

ASP and ASP.NET are not programming languages because they make use of other languages such as JavaScript and VBScript or .NET compatible languages.

ASP e ASP-NET non sono considerati linguaggi di programmaizone perché fanno uso di altri linguaggi come JavaScript e VBScript o linguaggi compatibili con .NET.

Per quanto riguarda i servers abbiamo:

  1. Apache           43.56%    con 3176 hit su 7291
  2. Microsoft IIS   29.68%    con 2164 hit su 7291
  3. Altro              18.78%    con 1369 hit su 7291
  4. Non definito     7.98%    con   582 hit su 7291

Sono stati sommati i risultati di tutte le pubbliche amministrazioni e prese le percentuali sul totale.

I riferimenti sono stati presi da http://web-pa.tektank.it/.