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();
}