varchar值的转换溢出了填充未定义数据表的int列

本文关键字:未定义 数据表 int 填充 转换 溢出 varchar | 更新日期: 2023-09-27 18:29:21

我收到一个错误varchar值"287201414153026341"的转换溢出了int列

但我在sql中所做的一切都不是试图将varchar列中的值转换为int

Select * from  view_spotcheck_manager

该值来自名为"request_id"的视图中的varchar列

DataTable dt = new DataTable();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = @query;
conn.Open();
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

dt.Load(rdr);
rdr.Close();
return dt;

线上出现异常

dt.Load(rdr);

很明显,由于某种原因,系统看到该值都是数字,尽管它是varchar列,但它试图在没有指示的情况下将其转换为int,因此我在Load()方法中假设了某种默认行为。

问题是我不希望它这样做,我需要它保持一个varchar(在这种情况下,我不应该得到这个错误。除了构造一个强类型的DataTable对象并具体加载每一列之外,有没有任何方法可以使Load方法不将这个全数字的varchar值转换为int?.

varchar值的转换溢出了填充未定义数据表的int列

事实证明,注释表明问题在底层视图中,而不是在Load方法中。有问题的列被错误地链接到另一个表的int列。修复了连接,现在一切正常。