首页 文章

土耳其窗口服务器2008安装中DataRow.Item()的ArgumentException

提问于
浏览
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() 方法填充我们的无类型 DataSet .

我们从 DataSet.Tables[0].Rows[0] 得到 DataRow 对象 . 我们将这个 DataRow 对象传递给其他方法,我们使用DataRow.Item (String)来获取列值 . 我们有几个列,我们以这种方式获得它们的值,没有任何问题 . 但是对于我们得到的一个特定列

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

这一列是我们的callid专栏!当我们将数据库中的列名更改为callid或CalliD时,我们不会看到这篇名为Introduce the Turkish I issue的文章,据我所知,文章地址是collation = TURKISH_CI_AS时的问题 .

我在这里错过了什么?我很感激任何有用的输入 .

谢谢,伊兰

1 回答

  • 0

    我的猜测是问题根本没发生在数据库端,而是本地代码( DataSet )正在寻找你的列 .

    最简单的修复可能是使用列序号值而不是名称 . 出于诊断目的,我建议您查看DataTable.Columns返回的列名称,并尝试使用各种方法以案例/文化不敏感的方式匹配名称 . 如果你不知道前序的序数,你可能想要动态地找到它,如果得到 DataSet 找到它失败:(

相关问题