sql >> データベース >  >> RDS >> Mysql

ストアドプロシージャC#を呼び出す正当な例を求める:MYSQL

    コードと写真は私がこれまで以上に言っていると思います。

    C#DBレイヤー(DBレイヤーにはconnがあります 接続文字列として):

    // 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テストレイヤー:

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

    ストアドプロシージャ(数値を取り、7を掛けます):

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

    デバッグビュー(読み取り:動作します。11x7=77):

    MySQL Connector 6.9.9.0 / Visual Studio 2015

    5.10.1保存済みの使用も参照してください。 Connector/Netからのルーチン 、年齢不明。



    1. PostgreSQLで重複する日付範囲を検索する

    2. 日付がMyS​​qlの夏時間にあるかどうかを検出します

    3. mysqlの1つのフィールドのみを除くすべてのフィールドを選択する

    4. postgresqlテーブルがpython(およびおそらくPsycopg2)の下に存在するかどうかを確認する