我有这种情况:
我有一张名为" 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"
答案 0 :(得分:0)
您有一个MySqlCommand
对象,但它与任何连接都没有关联。必须有一个活动的连接才能执行命令。
您可以在构造函数上关联它:
MySqlCommand cmd = new MySqlCommand("entradas_sai", cn);
或在构造函数之后:
cmd.Connection = cn;