【发布时间】:2016-03-07 11:16:45
【问题描述】:
我有这种情况:
我有一张名为“Entradas”的桌子和一张名为“Saidas”的桌子。都有 “数据”和“hora”列。考虑到这一点,由于“数据”和 “entradas”的“hora”列表示在该日期加入的汽车,并且 时间,以及“saidas”的“data”和“hora”列中的值 当我单击按钮时插入,插入当前 日期和时间。我正在请求一个可以插入的 sql 语法 将“data”和“hora”值放入表“saidas”并更新值 “entradas”称为“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();
}
}
我目前的问题是,当我单击按钮时,它不会执行我的程序,也不会执行我打开或关闭连接的命令。有什么建议吗?
编辑:经过一些研究,我发现我的实际程序在“sai”列中将所有值设置为 0 到 1,我该怎么做,所以它只根据“ID_Entrada”更改选定的网格行值
【问题讨论】:
-
您是否收到任何错误/异常消息?
-
追踪它时会发生什么?
-
Visual Studio 告诉我的唯一一件事是,必须在执行任何 sql 功能之前打开连接......但我打开它,在断点调试时,它传递给那个点在 cn.Open();并关闭字符串,禁用所有代码...