1

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

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

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

知道是什么原因造成的以及如何解决吗?这是堆栈跟踪:

[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

谢谢。

4

3 回答 3

5

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

采用

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

代替

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

在你的情况下

dt.Rows[0]["Long MSDS Update"]
于 2013-01-11T18:16:05.370 回答
1

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

Debug.WriteLine(dt.TableName);
foreach(DataColumn column in dt.Columns)
{
    Debug.WriteLine("\t" + column.ColumnName);
}
于 2013-01-11T18:01:53.787 回答
1

围绕它进行测试

if (dt.Columns.Contains("SomeColumnName"))
{
}
else
{
    // Danger Will Robinson!. Danger!
}
于 2013-01-11T18:16:14.507 回答