C# C语言中的存储过程#
我想在c#中使用存储过程。我在sql server中创建存储过程,并在程序中调用它。但是当我使用断点特性时,我知道数据不会从数据库中检索,因为断点会跳过循环 .aspx代码:C# C语言中的存储过程#,c#,sql,.net,tsql,stored-procedures,C#,Sql,.net,Tsql,Stored Procedures,我想在c#中使用存储过程。我在sql server中创建存储过程,并在程序中调用它。但是当我使用断点特性时,我知道数据不会从数据库中检索,因为断点会跳过循环 .aspx代码: <asp:Button ID="Button1" runat="server" Text="Button" OnClick="store" /> <asp:Label ID="Label9" runat="server" Text="Label"></asp:Label> 存储过程:
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="store" />
<asp:Label ID="Label9" runat="server" Text="Label"></asp:Label>
存储过程:
CREATE PROCEDURE procedure3
AS
BEGIN
select menuename from menue;
END
GO
您的程序不匹配(procedure3vsstoreprocedure3) 使用此代码
SqlCommand cmd = new SqlCommand("procedure3 ", conn);
并关闭您的连接
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
您的程序不匹配(procedure3vsstoreprocedure3) 使用此代码
SqlCommand cmd = new SqlCommand("procedure3 ", conn);
并关闭您的连接
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
国际海事组织,这是最大也是最有可能的问题:
catch (Exception sa)
{
Console.WriteLine(sa);
}
我想它很难告诉你出了什么问题,但你让它沉默了。没有任何理由尝试/抓住
这一点;如果这不起作用,那就是出了问题——让它出错吧。阅读异常详细信息
如果我很挑剔(坦率地说,我是),你需要更多的在这里使用,也就是说
using(SqlConnection conn = Class3.GetConnection())
using(SqlCommand cmd = new SqlCommand("whatever", conn))
{
cmd.CommandType = CommandType.StoredProcedure;
using(SqlDataReader rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
// do something
}
}
}
或者,坦率地说,更简单的方法是使用像dapper这样的工具:
using(SqlConnection conn = Class3.GetConnection())
{
foreach(var obj in conn.Query("whatever",
commandType: CommandType.StoredProcedure))
{
string menuename = obj.menuename;
// do something...
}
}
国际海事组织,这是最大也是最有可能的问题:
catch (Exception sa)
{
Console.WriteLine(sa);
}
我想它很难告诉你出了什么问题,但你让它沉默了。没有任何理由尝试
/抓住
这一点;如果这不起作用,那就是出了问题——让它出错吧。阅读异常详细信息
如果我很挑剔(坦率地说,我是),你需要更多的在这里使用,也就是说
using(SqlConnection conn = Class3.GetConnection())
using(SqlCommand cmd = new SqlCommand("whatever", conn))
{
cmd.CommandType = CommandType.StoredProcedure;
using(SqlDataReader rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
// do something
}
}
}
或者,坦率地说,更简单的方法是使用像dapper这样的工具:
using(SqlConnection conn = Class3.GetConnection())
{
foreach(var obj in conn.Query("whatever",
commandType: CommandType.StoredProcedure))
{
string menuename = obj.menuename;
// do something...
}
}
EXEC程序
是否产生任何结果
此外,在代码中,您将存储过程引用为storeprocedure3
,而实际上过程名称似乎是procedure3
将行更改为:
SqlCommand cmd = new SqlCommand("procedure3", conn);
EXEC程序
是否产生任何结果
此外,在代码中,您将存储过程引用为storeprocedure3
,而实际上过程名称似乎是procedure3
将行更改为:
SqlCommand cmd = new SqlCommand("procedure3", conn);
如果直接在Sql Management Studio中对数据库运行存储过程,它是否会返回数据?我注意到您为属性指定了标量值:Label9.Text=rdr[“menuename”].ToString();在从存储过程中检索单个值的情况下,您应该考虑使用CMD.ExeCudiSCADARARE()代替CMD.ExECUTEADEDER()。是否有异常发生?(提示:Console.WriteLine
在web应用程序中不是很有用)-连接是否以正确的用户身份执行?(from menue
不明确-取决于用户)-何时运行?也;需要更多的使用…您是否尝试过直接对数据库运行您的过程(使用Sql Server Management Studio)以查看它是否真的返回任何行?另外,在ASP.Net项目中使用Console.WriteLine也没什么用处,确保在catch子句中也放置一个断点,以查看是否发生任何异常,然后找到更好的方法来处理异常。如果直接在Sql Management Studio中对数据库运行存储过程,是否会返回数据?我注意到,您为属性Label9.Text=rdr[“menuename”]。ToString指定了一个标量值();在从存储过程中检索单个值的情况下,您应该考虑使用CMD.ExeCudiCaseAdter()代替CMD.ExECUTeEADER():是否发生异常?(提示:<代码>控制台。WraveLe> <代码>在Web应用程序中不是非常有用)-连接是否作为正确的用户执行?(来自菜单
不明确-取决于用户)-何时运行?还需要更多的使用
…您是否尝试过直接针对数据库运行过程(使用Sql Server Management Studio)要查看它是否真的返回了任何行?另外,在ASP.Net项目中使用Console.WriteLine有点无用,请确保在catch子句中也放置一个断点,以查看是否发生任何异常,然后找到更好的方法来处理异常……如果这是一个C#存储过程,则连接将来自上下文,而您不会如果这是一个C#存储过程,连接将来自上下文,而您不必(想要)关闭或处理它