簡體   English   中英

從SqlDataReader讀取int值

[英]Reading int values from SqlDataReader

嗨,任何人都可以請幫助我從int值的數據庫中獲取我很難獲取int值,它適用於varchar但不是int可以有人幫助我請

if (int.TryParse(TxtFarmerCode.Text, out intValue))
{
   using (SqlConnection sqlConn = new SqlConnection("Data Source=TANYA-PC;Initial Catalog=biore1;Integrated Security=True")) //here goes connStrng or the variable of it
   {
      sqlConn.Open();
      string sqlQuery = @"SELECT farmername,villagename,gender,farmsize FROM cottonpurchase WHERE farmercode = @code";

      using (SqlCommand cmd = new SqlCommand(sqlQuery, sqlConn))
      {
         cmd.Parameters.Add("@code", SqlDbType.Int).Value = intValue;
         using (SqlDataReader reader = cmd.ExecuteReader())
         {;
            if (reader.Read())
            {
               TxtFarmerName.Text = (string)reader[0];
               TxtVillageName.Text = (string)reader[1];
               TxtGender.Text = (string)reader[2];
            }
            else
               MessageBox.Show("For Farmer Code " + intValue.ToString() + " there is no farmer in the database.");
         }
      }
   }
}

我想獲取txtfarmersize這是int但不知道該怎么做請幫幫我?

您可以使用

reader.GetInt32(3);

從數據讀取器讀取32位int。

如果您知道數據的類型,我認為最好使用強類型的Get*方法來閱讀,而不僅僅是閱讀對象和強制轉換。

你考慮過使用嗎?

reader.GetInt32(reader.GetOrdinal(columnName)) 

而不是按位置訪問。 如果您更改查詢以在現有列之前添加新列,這會使您的代碼不那么脆弱並且不會中斷。 如果要在循環中執行此操作,請先緩存序號。

這應該工作:

txtfarmersize = Convert.ToInt32(reader["farmsize"]);

使用GetInt方法。

reader.GetInt32(3);

根據Sam Holder的回答,你可以為此做出擴展方法

namespace adonet.extensions
{
  public static class AdonetExt
  {
    public static int GetInt32(this SqlDataReader reader, string columnName)
    {
      return reader.GetInt32(reader.GetOrdinal(columnName));
    }
  }
}

並像這樣使用它

using adonet.extensions;

//...

int farmsize = reader.GetInt32("farmsize");

假設SqlDataReader中已經沒有GetInt32(字符串) - 如果有的話,只需使用其他方法名稱代替

調用ToString()而不是轉換讀者結果。

reader[0].ToString();
reader[1].ToString();
// etc...

如果要獲取特定數據類型值(在您的情況下為int ,請嘗試以下操作:

reader.GetInt32(index);
TxtFarmerSize.Text = (int)reader[3];

暫無
暫無

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

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