2013-12-13 37 views
1

當我調用該函數我收到一條data is null. This method or property cannot be called on null values.此方法或屬性不能在空值上調用。數據爲空

我相信,在這一行中存在錯誤的錯誤 Error = id = rd.GetString(0);

我使用的代碼如下

public string MaxId() 
{ 
    string id=""; 
    con.Open(); 
    string sql = "SELECT MAX(CustID) FROM Customer"; 
    SqlCommand cmd = new SqlCommand(sql,con); 
    SqlDataReader rd = cmd.ExecuteReader(); 
    while(rd.Read()) 
    { 
     id = rd.GetString(0); 
    } 
    con.Close(); 
    return id; 
} 

如何如何從DataReader中獲取可能爲空的字符串?

+2

你是找一個支持'GetString'方法可能'integer'值。我假設你的'CustID'列是一些整數類型..檢查[SqlDataReader方法](http://msdn.microsoft.com/en-us/library/System.Data.SqlClient.SqlDataReader_methods%28v=vs.110% 29.aspx)如果他們解決了你的問題,請接受答案.. –

+2

downvotes和密切的選票似乎有點苛刻。雖然這個問題可以更清楚地表達出來,但問題是什麼很明顯。 – Joe

回答

12

如果您的客戶表爲空,那麼查詢將返回NULL。

在這種情況下rd.GetString(0)會拋出,因爲GetString不能返回NULL值。

你可以這樣做:

if (rd.IsDBNull(0)) 
{ 
    id = null; 
} 
else 
{ 
    id = rd.GetString(0); 
} 
+1

也可以參考@soner關於洞字符串/ int問題的評論 –

+0

@JensKloster - 問題中沒有什麼可以說CustID字段是字符串,整數還是其他的東西(long,guid,...)。如果它不是一個字符串,那麼OP會描述一個錯誤。 – Joe

+0

噢,你是對的。我用總是返回數字的COUNT'把它弄糊塗了 –

相關問題