C# winforms 参数 1:无法从 'string' 转换为 'int'
C# winforms Argument 1: cannot convert from 'string' to 'int'
我正在尝试将数据 reader 中的列读入标签 (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();
}
我在下一行收到错误 "Argument 1: cannot convert from 'string' to 'int' "
string plantlable = dr.GetInt32("plant_id").ToString();
带有红色下划线的 plant_id。
我做错了什么?
我似乎无法弄清楚。 plant_id 是一个 Int 类型的列。
数据库使用 Sql Server 2008。
如有任何提示,我们将不胜感激。
通过使用此行 dr.GetInt32("plant_id")
,您正在尝试从 DataReader 读取整数值。并且错误消息说您正在尝试将字符串转换为整数,这意味着 plant_id
列将是文本或 Varchar 或类似的东西(不是整数)您能否交叉检查类型? .
如果是那么你可以尝试SqlDataReader.GetString
方法来读取那个值,在这种情况下你不需要添加.ToString()
,代码将是:
labelplantid.Text = dr.GetString("plant_id");
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();
对于那些寻找答案的人..这里是:
labelplantid.Text= dr["plant_id"].ToString();
或这个
string plantlable = dr.GetInt32(1).ToString();
labelplantid.Text = plantlable.ToString();
两者都有效。感谢您的及时答复:)
我正在尝试将数据 reader 中的列读入标签 (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();
}
我在下一行收到错误 "Argument 1: cannot convert from 'string' to 'int' "
string plantlable = dr.GetInt32("plant_id").ToString();
带有红色下划线的 plant_id。
我做错了什么? 我似乎无法弄清楚。 plant_id 是一个 Int 类型的列。 数据库使用 Sql Server 2008。
如有任何提示,我们将不胜感激。
通过使用此行 dr.GetInt32("plant_id")
,您正在尝试从 DataReader 读取整数值。并且错误消息说您正在尝试将字符串转换为整数,这意味着 plant_id
列将是文本或 Varchar 或类似的东西(不是整数)您能否交叉检查类型? .
如果是那么你可以尝试SqlDataReader.GetString
方法来读取那个值,在这种情况下你不需要添加.ToString()
,代码将是:
labelplantid.Text = dr.GetString("plant_id");
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();
对于那些寻找答案的人..这里是:
labelplantid.Text= dr["plant_id"].ToString();
或这个
string plantlable = dr.GetInt32(1).ToString();
labelplantid.Text = plantlable.ToString();
两者都有效。感谢您的及时答复:)