如何使用此编码获取数据

时间:2014-03-05 10:54:25

标签: c# asp.net .net visual-studio-2010

使用这个编码,虽然我给了fruitId,我需要检索fruitname,使用它会显示一些错误..任何一个帮助......

 string constring = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;



using (SqlConnection con = new SqlConnection(constring))
 {
   using (SqlCommand cmd = new SqlCommand("savefruit11", con))
    {
       con.Open();
       cmd.CommandType = CommandType.StoredProcedure;
       cmd.Parameters.AddWithValue("@FruitsId", int.Parse(TextBox3.Text.Trim()));
       cmd.Parameters.Add("@Fruitsname", SqlDbType.VarChar, 50);
       cmd.Parameters["@Fruitsname"].Direction = ParameterDirection.Output;
       cmd.ExecuteNonQuery();
       con.Close();
       TextBox4.Text = "Fruit Name:"+cmd.Parameters["@FruitName"].Value.ToString();
      }
    }

上述代码的存储过程。

use[FruitsDB]
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
     GO
    Create PROCEDURE [dbo].[savefruit11]
    @FruitId INT,
    @FruitName VARCHAR(50) OUTPUT
    AS
    BEGIN
    SET NOCOUNT ON;

    SELECT @FruitName = Fruitsname
   FROM Fruits1
   WHERE FruitsId = @FruitId
  END

3 个答案:

答案 0 :(得分:4)

   cmd.Parameters.Add("@Fruitsname", SqlDbType.VarChar, 50);
   cmd.Parameters["@Fruitsname"].Direction = ParameterDirection.Output;
   cmd.ExecuteNonQuery();
   con.Close();
   TextBox4.Text = "Fruit Name:"+cmd.Parameters["@FruitName"].Value.ToString();

您的参数名为@Fruitsname,但您可以使用@FruitName获取该参数。您在第一个版本中有一个额外的s。通过将第一个@FruitsName更改为@FruitName来保持一致,这将与您在存储过程中的内容相匹配。

或者,正如Henk在评论中建议的那样,创建一个包含参数名称的const字符串,以便它在所有用法中保持一致。

答案 1 :(得分:1)

使用cmd.ExecuteQuerycmd.ExecuteScalar

//To Execute SELECT Statement
ExecuteQuery()

//To Execute Other Than Select Statement(means to Execute INSERT/UPDATE/DELETE)
ExecuteNonQuery() 

使用你的udpate

存储过程中的参数名称中缺少

答案 2 :(得分:1)

使用以下示例方式

using (SqlConnection connection = new SqlConnection())
    {
        string connectionStringName = this.DataWorkspace.AdventureWorksData.Details.Name;
        connection.ConnectionString =
            ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString;

        string procedure = "HumanResources.uspUpdateEmployeePersonalInfo";
        using (SqlCommand command = new SqlCommand(procedure, connection))
        {
            command.CommandType = CommandType.StoredProcedure;

            command.Parameters.Add(
                new SqlParameter("@EmployeeID", entity.EmployeeID));
            command.Parameters.Add(
                new SqlParameter("@NationalIDNumber", entity.NationalIDNumber));
            command.Parameters.Add(
                new SqlParameter("@BirthDate", entity.BirthDate));
            command.Parameters.Add(
                new SqlParameter("@MaritalStatus", entity.MaritalStatus));
            command.Parameters.Add(
                new SqlParameter("@Gender", entity.Gender));

            connection.Open();
            command.ExecuteNonQuery();
        }
    }
来自MSDN的参考资料 http://msdn.microsoft.com/en-us/library/jj635144.aspx