我一直在使用相同的一行代码将数据库中的特定字段保存到变量。
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
感谢。
答案 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!
}