我有一个SQL查询应该在内存中填充DataTable,但是我收到一条错误,上面写着“我的价值的开头'太长了。”
查询在SQL编辑器中工作,但在我用C#以编程方式运行时却不行。计算它看起来的值最多只有38个字符长,最少9个。这不是很多,这使我对这个问题可能是什么感到困惑? SQL查询在子查询的帮助下基于来自其他数据库表的数据创建动态表。
错误会返回一个数字(SQL0433N and SQLSTATE=22001
),该数字会指示我explanation page.
然而,它并没有直接解决我的问题。
一些示例代码,其中ImportSQLTable()
包含SQL查询字符串。
OdbcDataAdapter da = new OdbcDataAdapter(ImportSQLTable(ID), DbConnection);
DataTable dt = new DataTable();
da.Fill(dt); // Fill the table with data from the query
使用.NET Framework 4.6.1
答案 0 :(得分:1)
我设法通过将显示错误的列转换为具有我觉得舒服的长度的数据类型来解决此问题。
转换看起来像这样:
SELECT CAST(MyColumn as varchar(100)) as MyNewColumn
编辑:另一种方法,或者如果这不起作用,我会使用@“”将字符串存储在C#中。看起来像这样:
public string mySQLString()
{
return @"
SELECT col1, col2, col3
FROM MyDatabase
WHERE col1 = 'mytext'
";
}
我不确切知道为什么,但是通过改变这个过长值的错误就消失了!