【发布时间】:2015-03-12 13:04:31
【问题描述】:
MySql 过程代码:
CREATE DEFINER=`root`@`localhost` PROCEDURE `USP_CreateCliente`(IN nome_cliente VARCHAR(45))
BEGIN
Select 20;
INSERT INTO clienti ( nome_cliente )
VALUES ( nome_cliente );
Select id_cliente from clienti;
END
控制器页面中的C#代码:
ClienteInfo CI = new ClienteInfo();
DboUser objdbo = new DboUser();
int id_cliente = 0;
CI.nome_cliente = txtNomeCliente.Text;
id_cliente = objdbo.CreateClienteInfo(CI);
DboUser 类:
public int CreateClienteInfo(ClienteInfo CI)
{
int result;
MySqlConnection conn = new MySqlConnection();
DbConnection db = new DbConnection();
conn = db.ConnessioneDb();
MySqlCommand cmd = new MySqlCommand(Costanti.StoredProcedures.USP_CreateCliente, conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@nome_cliente", CI.nome_cliente);
result = cmd.ExecuteNonQuery();
conn.Close();
return result;
}
我希望我的 C# 代码在将客户 ID 插入数据库后检索它,这样我就可以将其保存到会话中,稍后在打印包含客户信息的文档的页面中再次检索它。
我的 id_cliente 返回 0,您是否注意到任何语法错误? 我是不是做错了什么?
我 90% 确定这是处理存储过程的问题,因为客户插入正确
【问题讨论】:
-
为什么是 ExecuteNonQuery 而不是 executescaler 或 executereader?
-
为什么 90% 确定?为什么不是100%?哈哈。是的,SP 和调用代码中也有问题。请参阅史蒂夫的回答。
-
同时关闭
finally块中的连接,因为执行数据库操作可能有异常。
标签: c# mysql select stored-procedures return