2013-01-11 16 views
1

我一直在使用這個相同的行代碼來保存從我的數據庫到一個變量的特定字段。列[X]不屬於表服務器錯誤 - 爲什麼?

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

問題是我收到這個惱人的列不存在服務器錯誤。這是發生在不同的表和不同的領域與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 

謝謝。

+0

指定的列名拼寫是否正確?您還應該仔細檢查您的查詢是從右表中檢索的。 – codingbiz

回答

5

由於包含了方括號[],所以出現此錯誤。去掉方括號,它應該工作,而是使用的

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

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

在你的情況

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

該死!該死的該死的該死的DAMN。 :) :) +1 –

+1

在早上醒來看到你的問題在stackoverflow被回答...感覺像聖誕節的早晨:-) – Ned

1

運行下面的代碼並確保輸出是預期的。

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

它應該在哪裏打印出來?它不在屏幕上... – Ned

+1

Visual Studio中的輸出窗口(視圖 - >輸出或Ctrl + W,O)。 –

+0

然後是的,它完全按照在數據庫中打印出列的名字,和代碼中的完全一樣。 – Ned

1

裹輪測試它

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