domenica 20 febbraio 2011

Gestire i parametri su MySql con Visual Studio Express

Nel presente esempio  troviamo la gestione di:

  • Parametri per il comando sql insert
  • Recupero dell’ultimo id assegnato automaticamente dall’inserimento
  • Utilizzo di una stored procedure con recupero del valore di ritorno della funzione

Stored Procedure:

CREATE DEFINER=`root`@`%` FUNCTION `Incrementa`(valore int, incremento int) RETURNS int(11)
BEGIN
  declare retValue INTEGER DEFAULT 0;
  set retValue = valore + incremento;
  RETURN retValue;
END

Esempio VB.NET 

  Private cntxt As String = "User ID=utente;Password=password;Host=localhost;Port=3306;Database=dbprova;Protocol=TCP;Compress=false;Pooling=true;Min Pool Size=0;Max Pool Size=100;Connection Lifetime=0;"
    Private Sub eseguiButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles eseguiButton.Click
        'Definizione connessione per mysql
        Dim cn As New MySqlConnection(cntxt)
        'Oggetto command per mysql
        Dim cm As New MySqlCommand("INSERT INTO TableProva (Descrizione, Valore) VALUES(?Descrizione,?Valore)", cn)
        Try
            'Apertura della connessione
            cn.Open()
            'Aggiunta parametri
            cm.Parameters.AddWithValue("?Descrizione", String.Format("{0}-{1}", "Prova", DateTime.Now.ToString()))
            cm.Parameters.AddWithValue("?Valore", New Random().NextDouble * 1000)
            'Esecuzione della query di inserimento
            cm.ExecuteNonQuery()
            'Recupero dell'ultimo id inserito
            Dim i As Integer = CType(cm.LastInsertedId, Integer)
            'Definizione del nuovo command che "punta" ad una stored procedure
            cm = New MySqlCommand("Select Incrementa(?valore, ?incremento)", cn)
            'Aggiunta parametri al command
            Dim prm As New MySqlParameter
            prm.ParameterName = "?valore"
            prm.DbType = DbType.Int32
            prm.Value = i
            cm.Parameters.Add(prm)
            prm = New MySqlParameter
            prm.ParameterName = "?incremento"
            prm.DbType = DbType.Int32
            prm.Value = 100 'incremento di 100 il numero di id
            cm.Parameters.Add(prm)
            Dim o As Object = cm.ExecuteScalar
           MessageBox.Show(o.ToSTring())
        Catch ex As Exception
            MessageBox.Show(String.Format("{0}{1}{2}", ex.Message, Environment.NewLine, ex.StackTrace))
        Finally
            If cn.State = ConnectionState.Open Then
                cn.Close()
            End If
        End 
Try

Esempio C#   

private string cntxt = "User ID=utente;Password=password;Host=localhost;Port=3306;Database=dbprova;Protocol=TCP;Compress=false;Pooling=true;Min Pool Size=0;Max Pool Size=100;Connection Lifetime=0;";
    private void eseguiButton_Click(System.Object sender, System.EventArgs e)
    {
        //Definizione connessione per mysql
        MySqlConnection cn = new MySqlConnection(cntxt);
        //Oggetto command per mysql
        MySqlCommand cm = new MySqlCommand("INSERT INTO TableProva (Descrizione, Valore) VALUES(?Descrizione,?Valore)", cn);
        try {
            //Apertura della connessione
            cn.Open();
            //Aggiunta parametri
            cm.Parameters.AddWithValue("?Descrizione", string.Format("{0}-{1}", "Prova", DateTime.Now.ToString()));
            cm.Parameters.AddWithValue("?Valore", new Random().NextDouble * 1000);
            //Esecuzione della query di inserimento
            cm.ExecuteNonQuery();
            //Recupero dell'ultimo id inserito
            int i = Convert.ToInt32(cm.LastInsertedId);
            //Definizione del nuovo command che "punta" ad una stored procedure
            cm = new MySqlCommand("Select Incrementa(?valore, ?incremento)", cn);
            //Aggiunta parametri al command
            MySqlParameter prm = new MySqlParameter();
            prm.ParameterName = "?valore";
            prm.DbType = DbType.Int32;
            prm.Value = i;
            cm.Parameters.Add(prm);
            prm = new MySqlParameter();
            prm.ParameterName = "?incremento";
            prm.DbType = DbType.Int32;
            prm.Value = 100;
            //incremento di 100 il numero di id
            cm.Parameters.Add(prm);
            object o = cm.ExecuteScalar;
            MessageBox.Show(o.ToString());


        } catch (Exception ex) {
            MessageBox.Show(string.Format("{0}{1}{2}", ex.Message, Environment.NewLine, ex.StackTrace));
        } finally {
            if (cn.State == ConnectionState.Open) {
                cn.Close();
           
}

Nessun commento: