无法使用"使用var参数化查询打开连接"

时间:2016-03-07 11:16:46

标签: c# mysql

我有这种情况:

  

我有一张名为" Entradas"一个叫做#34; Saidas"。都有   专栏"数据"和" hora"。考虑到这一点,因为"数据"和   " hora专栏" entradas"意味着那辆车在那个时候加入了   时间,以及列中的值"数据"和" hora" " sayas"   意思是插入,因为我点击一个按钮,插入当前   日期和时间。我正在请求可以插入的SQL语法   价值观"数据"和" hora"进入表格" saidas"并更新值   "入住日期"叫" sai"等于0,我希望它改为   按下按钮1。

我有这个程序:

CREATE DEFINER=`root`@`localhost` PROCEDURE `entradas_sai`(
IN ID_VEICULO VARCHAR(45), OUT retcode INT)
BEGIN
    DECLARE _rollback BOOL DEFAULT 0;
    DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET _rollback = 1;
    START TRANSACTION;
    INSERT INTO SAIDAS(data, hora) VALUES(date(now()) ,time(now()));
    UPDATE ENTRADAS SET SAI=1;
    IF '_rollback' THEN
        SET retcode = 0;
        ROLLBACK;
    ELSE
        SET retcode = 1;
        COMMIT;
    END IF;
END

这是我在按钮点击时运行它的实际代码:

private void cmdSaida_Click(object sender, EventArgs e)
        {

            using (var cn = new MySqlConnection("server=localhost;user id=root;password=12345;persistsecurityinfo=True;database=portaria;allowuservariables=True"))
            {
                cn.Open();

                    MySqlCommand cmd = new MySqlCommand(); 
                    cmd.CommandText = "entradas_sai";
                    cmd.CommandType = CommandType.StoredProcedure;

                    cmd.Parameters.AddWithValue("@ID_veiculo", Grid1.SelectedCells[1].Selected);
                    cmd.Parameters["@id_veiculo"].Direction = ParameterDirection.Input;

                    cmd.Parameters.AddWithValue("@retcode", MySqlDbType.Int32);
                    cmd.Parameters["@retcode"].Direction = ParameterDirection.Output;

                    cmd.ExecuteNonQuery();
                    var res = cmd.Parameters["@retcode"].Value;

                cn.Close();
             }              
        }

我现在的问题是,当我点击按钮时,它既不会执行我的程序也不会打开或关闭连接。任何sugestions?

编辑:经过一些研究后,我发现我的实际程序将所有值从0到1设置为#34; sai"我该怎么做才能只改变选定的网格行值,基于" ID_Entrada"

1 个答案:

答案 0 :(得分:0)

您有一个MySqlCommand对象,但它与任何连接都没有关联。必须有一个活动的连接才能执行命令。

您可以在构造函数上关联它:

MySqlCommand cmd = new MySqlCommand("entradas_sai", cn);

或在构造函数之后:

cmd.Connection = cn;