0

我们的软件安装在土耳其的(客户站点)Window Server 2008 R2 Foundation 上(因此语言环境设置为土耳其语,因此所有菜单和消息都以土耳其语显示)。我们使用的是 SQL Server 2005 Express。数据库排序规则是SQL_Latin1_General_CP1_CI_AI(与我们安装的其他英文网站一样)。

我们的代码用一个简单的查询查询数据库:select * form tableName where callid='variable'(callid是我们的主键,但是数据库中的列名是CallID,列类型是varchar(60)),使用SqlDataAdapter.Fill()方法来填充我们的untyped DataSet

我们DataRow从 中产生对象DataSet.Tables[0].Rows[0]。我们将此DataRow对象传递给其他方法,并使用DataRow.Item (String)来获取列值。我们有几列可以通过这种方式毫无问题地获取它们的值。但是对于一个特定的列,我们得到

ArgumentException: <column name> column does not belong to table Table

本栏目是我们的callid栏目!当我们将数据库中的列名更改为 callid 或 CalliD 时,我们不会收到异常。我看过这篇名为“介绍土耳其语”的文章,据我了解,文章地址是当 collat​​ion = TURKISH_CI_AS 时的问题。

我在这里想念什么?我会很感激任何有用的意见。

谢谢,伊兰

4

1 回答 1

0

我的猜测是问题根本没有发生在数据库端,而是当本地代码 ( DataSet) 正在查找您的列时。

最简单的解决方法可能是使用列数值而不是名称。出于诊断目的,我建议您查看返回的列名,DataTable.Columns并尝试各种方法以不区分大小写/区域性的方式匹配名称。如果您事先不知道序数,您可能希望以动态方式找到它,如果DataSet找到它失败:(

于 2011-10-05T15:00:03.250 回答