我试图将数据读取器中的列读入标签(c#winform) 我的代码如下:
SqlCommand command1 = new SqlCommand("select plant_name,plant_id from plant order by plant_id ", connection);
try
{
connection.Open();
SqlDataReader dr = command1.ExecuteReader();
while (dr.Read())
{
string plantlable = dr.GetInt32("plant_id").ToString();
labelplantid.Text = plantlable.ToString();
comboBoxplant.Items.Add(dr["plant_name"]);
}
dr.Close();
dr.Dispose();
connection.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
Application.Exit();
}
我收到错误"参数1:无法转换为' string'到' int' "在以下一行
string plantlable = dr.GetInt32("plant_id").ToString();
用plant_id在RED中加下划线。
我做错了什么? 我似乎无法弄明白。 plant_id是列类型Int。 使用Sql Server 2008作为数据库。
任何提示都将不胜感激。
答案 0 :(得分:2)
SqlDataReader.GetInt32方法将整数作为参数。该整数标记您要引用的字段的索引。在你的情况下," plant_name"将是索引0和" plant_id"将是索引1,因为这是您在SQL查询中指定的顺序。
您收到错误的原因是,您将GetInt32
视为字典getter并尝试访问" plant_id"而不是传递索引。直。相反,请尝试以下方法:
string plantlable = dr.GetInt32(1).ToString();
或者,您可以使用索引器(数组)表示法从SqlDataReader直接获取值作为对象:
string plantlable = dr["plant_id"].ToString();
答案 1 :(得分:0)
通过使用此行dr.GetInt32("plant_id")
,您尝试从DataReader读取整数值。并且错误消息表明您正在尝试将字符串转换为整数,这意味着plant_id
列将是Text或Varchar或类似的东西(不是整数)您能否请交叉检查类型?
如果是这样,那么您可以尝试SqlDataReader.GetString
方法来读取该值,在这种情况下,您无需添加.ToString()
,ecode将是:
labelplantid.Text = dr.GetString("plant_id");
答案 2 :(得分:0)
对于那些寻找答案的人......这里是:
labelplantid.Text= dr["plant_id"].ToString();
或者
string plantlable = dr.GetInt32(1).ToString();
labelplantid.Text = plantlable.ToString();
任何一个都有效。感谢您的快速回答:)