从SqlDataReader读取int值

嗨,任何人都可以请帮助我从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); 

调用ToString()而不是转换读者结果。

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

如果要获取特定数据类型值(在您的情况下为int ,请尝试以下操作:

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