Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 存储过程-使用参数选择并填充文本框_C#_Sql_Sql Server_Database_Stored Procedures - Fatal编程技术网

C# 存储过程-使用参数选择并填充文本框

C# 存储过程-使用参数选择并填充文本框,c#,sql,sql-server,database,stored-procedures,C#,Sql,Sql Server,Database,Stored Procedures,我希望我的存储过程能够从表中选择数据并将这些数据放入文本框中。基本上,当一个人从下拉菜单中选择一个项目,然后想要编辑该项目时,就会使用该选项 我做错了什么 C 我的存储过程的一部分 PROCEDURE [dbo].[spGetEvent] @EventId int, @EventName nvarchar(255), @Location nvarchar(255), @City nvarchar(30), @Stat

我希望我的存储过程能够从表中选择数据并将这些数据放入文本框中。基本上,当一个人从下拉菜单中选择一个项目,然后想要编辑该项目时,就会使用该选项

我做错了什么

C

我的存储过程的一部分

PROCEDURE [dbo].[spGetEvent]
        @EventId int,
        @EventName nvarchar(255),
        @Location nvarchar(255),
        @City nvarchar(30),
        @State nvarchar(2),
        @Description nvarchar(max)
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    SELECT *
    FROM Event
    WHERE EventId = @EventId AND 
    EventName  = @EventName AND 
    Location = @Location AND 
    City = @City AND 
    State = @State AND 
    Description = @Description
END

您正在执行命令,然后再设置所有参数

using (SqlConnection sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["Events2"].ConnectionString))
{ using (var command = sqlConn.CreateCommand())
    {

        command.CommandType = System.Data.CommandType.StoredProcedure;
        command.CommandText = "spGetEvent";

         command.Parameters.Add("@EventId", SqlDbType.Int).Value = eventSelected;

        using (var reader = command.ExecuteReader())
         {
             if(reader.Read())
             {
                 eventName.Text = reader["EventName"].ToString();
                 location.Text = reader["Location"].ToString();
                 city.Text = reader["City"].ToString();
                 state.Text = reader["State"].ToString();
                 description.Text = reader["Description"].ToString();
             }
         }
    }
}
将存储过程更改为仅接受EventId作为参数:

PROCEDURE [dbo].[spGetEvent]
        @EventId int
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    SELECT *
    FROM Event
    WHERE EventId = @EventId 
END

谢谢好吧,当我在代码中添加注释时,它仍然不起作用。我试过这样的方法:location=reader[@location];我添加了断点。它表示EventName、Location等为空。但它会提取身份证。我想我的存储过程编码错误了…?对不起,我想我误解了你的要求。是否仅从db获取所选eventID的详细信息并在文本框中显示?是,这是正确的。所选的EventId需要提供其相关的EventName、位置等。很好,这很有效。非常感谢。我现在明白我做错了什么。
PROCEDURE [dbo].[spGetEvent]
        @EventId int
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    SELECT *
    FROM Event
    WHERE EventId = @EventId 
END