sql >> Database >  >> RDS >> Mysql

Vragen om een ​​legitiem voorbeeld van het aanroepen van opgeslagen procedure C#:MYSQL

Ik geloof dat de code en de foto's meer zeggen dan ik ooit zal doen.

C# DB Layer (DB Layer heeft conn als een verbindingsreeks):

// 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-testlaag:

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

Opgeslagen procedure (neem een ​​getal, vermenigvuldig met 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 (lees:het werkt. 11x7=77):

MySQL Connector 6.9.9.0 / Visual Studio 2015 :

Zie ook 5.10.1 Opgeslagen Routines van Connector/Net , leeftijd onbekend.



  1. Gebruikersverwijzingssysteem met PHP en MySQL

  2. Hoe zou je de uren van een bedrijf opslaan in de db/model van een Rails app?

  3. Recordtellingen voor alle tabellen in de MySQL-database ophalen

  4. Hoe doe je een tweede PDO mysql-query in een while-lus van een andere query?