![](/img/trans.png)
[英]Retrieving VarChar(MAX) from SQL Server using C# and a stored procedure
[英]retrieving data from sql database using C# with stored procedure
每當我嘗試從我的數據庫中檢索數據時,我總是為空。 我正在使用的代碼如下:
protected void Button2_Click(object sender, EventArgs e)
{
SqlConnection myConnection = new SqlConnection(GetConnectionString());
SqlCommand cmd = new SqlCommand("spSelectCustomer", myConnection);
cmd.CommandType = CommandType.StoredProcedure;
myConnection.Open();
SqlParameter custId = cmd.Parameters.Add("@CustomerId", SqlDbType.Int);
custId.Direction = ParameterDirection.Input;
custId.Value = 10;
SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
Label1.Text = dr["FirstName"].ToString();
Label2.Text = dr["LastName"].ToString();
Label3.Text = dr[3].ToString();
Label4.Text = dr["Email"].ToString();
}
private static string GetConnectionString()
{
return ConfigurationManager.ConnectionStrings["Lab3ConnectionString"].ConnectionString;
}
您需要先調用Read
才能訪問數據,您的代碼應該是
While (dr.Read())
{
Label1.Text = dr["FirstName"].ToString();
Label2.Text = dr["LastName"].ToString();
Label3.Text = dr[3].ToString();
Label4.Text = dr["Email"].ToString();
}
//close DataReader
dr.Close();
在從 DataReader 讀取列值之前,您必須從數據讀取器調用Read()方法。
if (dr.Read())
{
Label1.Text = dr["FirstName"].ToString();
Label2.Text = dr["LastName"].ToString();
Label3.Text = dr[3].ToString();
Label4.Text = dr["Email"].ToString();
}
你也可以試試:
SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.SingleRow);
您在閱讀器上錯過了對Read()
的調用。 我還建議您將IDisposable
對象包裝在using
語句中,如下所示。
從SqlDataReader
檢索值時,您似乎還使用了列名和序數位置的奇怪組合。
protected void Button2_Click(object sender, EventArgs e)
{
using (SqlConnection myConnection = new SqlConnection(GetConnectionString()))
{
using (SqlCommand cmd = new SqlCommand("spSelectCustomer", myConnection))
{
cmd.CommandType = CommandType.StoredProcedure;
myConnection.Open();
SqlParameter custId = cmd.Parameters.AddWithValue("@CustomerId", 10);
using (SqlDataReader dr = cmd.ExecuteReader())
{
if (dr.Read())
{
Label1.Text = dr["FirstName"].ToString();
Label2.Text = dr["LastName"].ToString();
Label3.Text = dr[3].ToString();
Label4.Text = dr["Email"].ToString();
}
}
}
}
}
SqlDataReader myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
while(myReader.Read())
{
Console.WriteLine(myReader.GetString(0));
}
myReader.Close();
//Implicitly closes the connection because CommandBehavior.CloseConnection was specified.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.