sql >> Database teknologi >  >> RDS >> Mysql

Beder om et legitimt eksempel på at kalde lagret procedure C#:MYSQL

Jeg tror på, at koden og billederne siger mere, end jeg nogensinde vil.

C# DB Layer (DB Layer har conn som en forbindelsesstreng):

// Note: this is an instance (myDB in terms of the GUI Object)

using System.Data;
using MySql.Data.MySqlClient;
...
...
public long MultBySeven(long theNum)
{   // Call a Mysql Stored Proc named "multBy7"
    // which takes an IN parameter, Out parameter (the names are important. Match them)
    // Multiply the IN by 7 and return the product thru the OUT parameter

    long lParam = 0;
    using (MySqlConnection lconn = new MySqlConnection(connString))
    {
        lconn.Open();
        using (MySqlCommand cmd = new MySqlCommand())
        {
            cmd.Connection = lconn;
            cmd.CommandText = "multBy7"; // The name of the Stored Proc
            cmd.CommandType = CommandType.StoredProcedure; // It is a Stored Proc

            // Two parameters below. An IN and an OUT (myNum and theProduct, respectively)
            cmd.Parameters.AddWithValue("@myNum", theNum); // lazy, not specifying ParameterDirection.Input;
            cmd.Parameters.AddWithValue("@theProduct", MySqlDbType.Int32);
            cmd.Parameters["@theProduct"].Direction = ParameterDirection.Output; // from System.Data
            cmd.ExecuteNonQuery(); // let it rip
            Object obj = cmd.Parameters["@theProduct"].Value;
            lParam = (Int32)obj;    // more useful datatype
        }
    }
    return (lParam);
}

C# GUI Test Layer:

private void btnTestInOut_Click(object sender, EventArgs e)
{   // This GUI Layer call thru the use of a business object or data layer object (`myDB`)
    long localHere = myDB.MultBySeven(11);
}

Lagret procedure (tag et tal, gang med 7):

DROP PROCEDURE IF EXISTS multBy7;
DELIMITER $
CREATE PROCEDURE multBy7
(   IN myNum INT,
    OUT theProduct INT
)
BEGIN
    SET theProduct=myNum*7;
END$
DELIMITER ;

Debug View (læs:det virker. 11x7=77):

MySQL Connector 6.9.9.0 / Visual Studio 2015 :

Se også 5.10.1 Brug af lagret Rutiner fra Connector/Net , alder ukendt.



  1. Problem med MySQL til Visual Studio / Visual Studio 2017 Datasource Wizard. Objektreference er ikke indstillet til en forekomst af et objekt

  2. isolering af en understreng i en streng før et symbol i SQL Server 2008

  3. Sådan indstilles en standardværdi for en eksisterende kolonne

  4. De mest almindelige PostgreSQL-fejlscenarier