簡體   English   中英

無法從存儲過程中獲取數據

[英]Unable to get data from stored procedure

我試圖從C#代碼中獲取存儲過程,但始終得到結果== -1。 我不知道哪里出錯了。 我搜索了很多,但沒有找到任何解決方案。 請查看我的代碼片段並指導我做錯了什么。

提前致謝。

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

來自ExecuteNonQuery doc;

對於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.
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM