列[X]不属于表服务器错误 - 为什么?

时间:2013-01-11 17:56:35

标签: c# asp.net mysql sql-server sql-server-2008

我一直在使用相同的一行代码将数据库中的特定字段保存到变量。

variable = Convert.ToType(dt.Rows[0]["[Column Name]"]);

问题是我得到这个烦人的列不存在服务器错误。对于不同的表和不同的字段,sql查询就像“Select * From Table”一样简单。 我已经无数次检查过列名是否正确,我尝试使用列名中的空格而没有 - 似乎没有任何帮助。

知道造成这种情况的原因以及如何解决这个问题? 这是堆栈跟踪:

[ArgumentException: Column '[Long MSDS Update]' does not belong to table Table.]
System.Data.DataRow.GetDataColumn(String columnName) +5253191
System.Data.DataRow.get_Item(String columnName) +13
SiteMaster.msds_update() in
c:\Users\nravid\Desktop\School\Project\PhillipsSite\Site.master.cs:198
SiteMaster.master_Page_PreLoad(Object sender, EventArgs e) in c:\Users\nravid\Desktop\School\Project\PhillipsSite\Site.master.cs:92
System.EventHandler.Invoke(Object sender, EventArgs e) +0
System.Web.UI.Page.OnPreLoad(EventArgs e) +121
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +699

感谢。

3 个答案:

答案 0 :(得分:5)

您收到此错误是因为您包含了方括号[]。删除方括号,它应该工作

使用

dt.Rows[0]["Column Name"]

而不是

dt.Rows[0]["[Column Name]"]

在你的情况下

dt.Rows[0]["Long MSDS Update"]

答案 1 :(得分:1)

运行下面的代码并确保输出是预期的。

Debug.WriteLine(dt.TableName);
foreach(DataColumn column in dt.Columns)
{
    Debug.WriteLine("\t" + column.ColumnName);
}

答案 2 :(得分:1)

围绕它进行测试

if (dt.Columns.Contains("SomeColumnName"))
{
}
else
{
    // Danger Will Robinson!. Danger!
}