将 varchar 值“FOT”转换为数据类型 int 时转换失败

Posted

技术标签:

【中文标题】将 varchar 值“FOT”转换为数据类型 int 时转换失败【英文标题】:Conversion failed when converting the varchar value 'FOT' to data type int 【发布时间】:2014-02-16 03:03:33 【问题描述】:
String start_cd;
String end_cd;
opencon();

SqlCommand res = new SqlCommand("SELECT ID,'" + start_cd + "','" + end_cd + "' FROM Train_route_up WHERE '" + start_cd + "'!=0 or '" + end_cd + "'!=0", con);
SqlDataAdapter sda_res = new SqlDataAdapter(res);
DataTable dt_res = new DataTable();
sda_res.Fill(dt_res);

listBox1.DataSource=dt_res;
listBox1.DisplayMember=" +start_cd+ ";
//Train_route_up=  SQL table name
//FOT=start_cd value(nvarchar)

我收到此错误:。我哪里错了?

【问题讨论】:

你的表格列是什么? sql表列名=FOT,数据类型=int 【参考方案1】:

您的错误是 SQL Server 在数据库认为有必要的上下文中无法将字符串转换为整数时产生的错误。

where 子句中有这些表达式:

'" + start_cd + "'!=0 or '" + end_cd + "'!=0

您将字符串(用单引号括起来)与整数 (0) 进行显式比较。这是其中一种情况。如果字符串不是数字格式,这将产生错误。

我不知道你想做什么,也许是以下之一:

比较字符串'0'

'" + start_cd + "'!='0' or '" + end_cd + "'!='0'

与 NULL 比较

'" + start_cd + "' is not null or '" + end_cd + "' is not null

引用列名而不是字符串:

" + start_cd + "!=0 or " + end_cd + "!=0

【讨论】:

我使用了这个解决方案 " + start_cd + "!=0 或 " + end_cd + "!=0 但列表框显示 System.Data.DataRowView (my sql table column Data type int)

以上是关于将 varchar 值“FOT”转换为数据类型 int 时转换失败的主要内容,如果未能解决你的问题,请参考以下文章

将 varchar 数据类型转换为 datetime 数据类型导致值超出范围的问题

将varchar值'N'转换为数据类型smallint时,转换失败。

将 varchar 值“AND ID =”转换为数据类型 int 时转换失败

将 varchar 值转换为数据类型 int 时转换失败

将 varchar 值“N”转换为数据类型 smallint 时转换失败

将 varchar 值“Collect_Date”转换为数据类型 int 时转换失败