【问题标题】:how to fetch data using this coding如何使用此编码获取数据
【发布时间】:2014-04-07 09:18:45
【问题描述】:

使用这种编码,当我给出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

【问题讨论】:

  • 您收到什么错误?
  • 可能存储过程的代码也会有所帮助。
  • 使用字符串_fruitName=cmd.ExecuteScalar();
  • 此 SqlParameterCollection 不包含具有 ParameterName '@FruitName' 的 SqlParameter。显示此错误..
  • s 在存储过程中的参数名称中丢失

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


【解决方案1】:
   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 在 cmets 中建议的那样,创建一个 const 字符串来包含您的参数名称,以便在所有用法中保持一致。

【讨论】:

  • 是的,通过确保参数名称只有一个位置、一个需要更改的位置以及始终使用相同的值,摆脱魔术字符串将使生活变得更加轻松。
【解决方案2】:

使用cmd.ExecuteQuerycmd.ExecuteScalar

//To Execute SELECT Statement
ExecuteQuery()

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

用你的更新

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

【讨论】:

  • 没有看到可能不是正确答案的存储过程。
  • @Md.Parvez Alam ...您的答案是正确的,我申请了,我得到了结果..谢谢你..我是 c# 的初学者..谢谢你的宝贵意见...跨度>
【解决方案3】:

使用下面的示例方式

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

【讨论】:

  • 感谢您的链接
猜你喜欢
  • 2015-09-28
  • 1970-01-01
  • 1970-01-01
  • 2018-12-20
  • 2016-09-14
  • 2016-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多