我收到一个错误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?.
事实证明,注释表明问题在底层视图中,而不是在Load方法中。有问题的列被错误地链接到另一个表的int列。修复了连接,现在一切正常。