SqlDataReader 数据类型转换错误
SqlDataReader Datatype Conversion Error
我正在尝试从组合框中的数据库加载项目,但在代码中出现了这个意外错误,而且似乎没有明显的原因。请帮忙。
错误:参数 1:无法从 'string' 转换为 'int'。
在数据库中,'PortName' 的数据类型是 Varchar。
Database Table
void FillCombo()
{
SqlConnection conn = new SqlConnection(global::flight_management.Properties.Settings.Default.conn);
string sql = "SELECT PortName FROM PORTS";
SqlCommand exesql = new SqlCommand(sql, conn);
SqlDataReader myReader;
try
{
conn.Open();
myReader = exesql.ExecuteReader();
while(myReader.Read())
{
string sName = myReader.GetString("PortName");
// ERORR HERE: Argument 1: Cannot convert from 'string' to 'int'
ComboFromA.Items.Add("sName");
}
}
catch (Exception ex) {lblError.Text = "Error Loading Airports: "+ ex.Message;}
finally {conn.Close();}
}
Argument 1: Cannot convert from 'string' to 'int'
从 SqlDataReader 读取数据时数据库类型很重要
ColumnType 是字符串 GetString
ColumnType 是 int GetInt32
ColumnType 是 Double GetDouble
你可以用一个作为例子
我认为这是 SqlDataReader
的最佳实践读取值
myReader.GetString(myReader.GetOrdinal("PortName"));
并替换
ComboFromA.Items.Add("sName") to ComboFromA.Items.Add(sName);
试试下面的代码
void FillCombo()
{
SqlConnection conn = new SqlConnection(global::flight_management.Properties.Settings.Default.conn);
string sql = "SELECT PortName FROM PORTS";
SqlCommand exesql = new SqlCommand(sql, conn);
SqlDataReader myReader;
try
{
conn.Open();
myReader = exesql.ExecuteReader();
while(myReader.Read())
{
string sName = myReader.GetString(0);
//ust use the index 0 for first attribute in select list
ComboFromA.Items.Add("sName");
}
}
catch (Exception ex) {lblError.Text = "Error Loading Airports: "+ ex.Message;}
finally {conn.Close();}
}
我正在尝试从组合框中的数据库加载项目,但在代码中出现了这个意外错误,而且似乎没有明显的原因。请帮忙。 错误:参数 1:无法从 'string' 转换为 'int'。 在数据库中,'PortName' 的数据类型是 Varchar。
Database Table
void FillCombo()
{
SqlConnection conn = new SqlConnection(global::flight_management.Properties.Settings.Default.conn);
string sql = "SELECT PortName FROM PORTS";
SqlCommand exesql = new SqlCommand(sql, conn);
SqlDataReader myReader;
try
{
conn.Open();
myReader = exesql.ExecuteReader();
while(myReader.Read())
{
string sName = myReader.GetString("PortName");
// ERORR HERE: Argument 1: Cannot convert from 'string' to 'int'
ComboFromA.Items.Add("sName");
}
}
catch (Exception ex) {lblError.Text = "Error Loading Airports: "+ ex.Message;}
finally {conn.Close();}
}
Argument 1: Cannot convert from 'string' to 'int'
从 SqlDataReader 读取数据时数据库类型很重要
ColumnType 是字符串 GetString
ColumnType 是 int GetInt32
ColumnType 是 Double GetDouble
你可以用一个作为例子
我认为这是 SqlDataReader
myReader.GetString(myReader.GetOrdinal("PortName"));
并替换
ComboFromA.Items.Add("sName") to ComboFromA.Items.Add(sName);
试试下面的代码
void FillCombo()
{
SqlConnection conn = new SqlConnection(global::flight_management.Properties.Settings.Default.conn);
string sql = "SELECT PortName FROM PORTS";
SqlCommand exesql = new SqlCommand(sql, conn);
SqlDataReader myReader;
try
{
conn.Open();
myReader = exesql.ExecuteReader();
while(myReader.Read())
{
string sName = myReader.GetString(0);
//ust use the index 0 for first attribute in select list
ComboFromA.Items.Add("sName");
}
}
catch (Exception ex) {lblError.Text = "Error Loading Airports: "+ ex.Message;}
finally {conn.Close();}
}