【问题标题】:Unable to get data from stored procedure无法从存储过程中获取数据
【发布时间】:2015-06-28 10:23:36
【问题描述】:

我试图从 C# 代码中访问存储过程,但总是得到结果 == -1。我不知道我哪里错了。我进行了很多搜索,但没有找到任何解决方案。请查看我的代码 sn-p 并指导我做错了什么。

提前致谢。

C#代码:

using (SqlConnection connection = new SqlConnection(getConnectionString()))
using (SqlCommand command = new SqlCommand())
{
    Int32 rowsAffected;

    command.CommandText = "SP_LOGIN_GETUSERBYNAME";
    command.CommandType = CommandType.StoredProcedure;
    // command.Parameters.Add(new SqlParameter("@Email", userObj.email));
    // command.Parameters.Add("@Email", SqlDbType.VarChar).Value = userObj.email.Trim();
    command.Parameters.AddWithValue("@Email", userObj.email.ToString());
    command.Connection = connection;

    connection.Open();
    rowsAffected = command.ExecuteNonQuery();
    connection.Close();

    return rowsAffected;
}

连接字符串:

return "Data Source=MUNEEB-PC;Initial Catalog=HRPayRoll;User ID=sa; Password=sa";

存储过程代码:

CREATE PROCEDURE SP_LOGIN_GETUSERBYNAME
    @Email varchar(50)
AS
    SELECT *
    FROM [User]
    WHERE Email = @Email
GO

【问题讨论】:

  • 避免使用sp_ 前缀命名存储过程。该前缀用于 SQL Server 中包含的系统存储过程。
  • 感谢@Dan 指导我 :)

标签: c# sql-server stored-procedures wcf-data-services


【解决方案1】:

来自ExecuteNonQuerydoc;

对于 UPDATE、INSERT 和 DELETE 语句,返回值为 受命令影响的行数。当触发器存在于 正在插入或更新的表,返回值包括数字 受插入或更新操作和数量影响的行数 受触发器或触发器影响的行数。 对于所有其他类型的 语句,返回值为-1

由于您的命令是 SELECT,所以将 -1 作为返回值正常。

如果你想达到你的结果,你可以改用ExecuteReader方法。

var reader = command.ExecuteReader();
while (reader.Read())
{
     // This will iterate your results line by line and
     // You can get columns with zero-based values like reader[0], reader[1] or
     // can use GetXXX methods of it like GetString(0) or GetInt32(1) etc.
}

【讨论】:

  • 感谢您的回复,那么如何从数据库中获取特定行?然后在该值的基础上进行进一步的操作?
  • 我的意思是问我如何获取整个对象。谢谢
  • @Steve Ups,错过了。固定。
  • @MuneebAmjad 如果您知道要准确读取的行号,您可以在while 循环中设置counter 并在您的计数器设置时读取它此行号。当您到达 行时,您可以读取您的列值,例如 reader[0]reader[1] 或者您可以使用 datareader 的 GetXXX() 方法(我几乎总是更喜欢)
  • @SonerGönül 是否有任何其他方法可以从数据库中检索整行。然后按列解析它而不是上面提到的索引方式?
猜你喜欢
  • 2021-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-01
  • 2011-10-14
  • 1970-01-01
  • 1970-01-01
  • 2019-06-23
相关资源
最近更新 更多