2012-06-12 14 views
2

我有這樣的代碼:連接到從C#的MySQL給了我零例外

con.Open(); 
cmd = new MySqlCommand(String.Format("SELECT concat(name,'|',lastname) FROM {0} WHERE ID= ?Parname;", ConfigSettings.ReadSetting("my_data")), con); 
cmd.Parameters.Add("?Parname", MySqlDbType.VarChar).Value = id_value; 
var tokens = ((String)cmd.ExecuteScalar()).Split('|'); 
name = tokens[0]; 
lastname = tokens[1]; 

當我輸入的值id,當用戶實際上是在數據庫中這是可以正常使用。但是當數據庫中沒有這樣的用戶時,我得到了空的異常。如果他不在數據庫中,我需要將其寫入未知用戶。

+0

等待,你希望在信息不存在從數據庫中獲取信息?這沒有任何意義。你會得到一個空引用異常,因爲(大概)對'ExecuteScalar'的調用返回null,因爲你正在尋找的行在數據庫中不存在,從你的描述中你所期望的就是這個行。 – CodingGorilla

回答

1

如果有給定id沒有用戶的ExecuteScalar返回值是DBNull.Value

var result = cmd.ExecuteScalar(); 
if (result != DBNull.Value) 
{ 
    var tokens = ((String)result).Split('|'); 
    name = tokens[0]; 
    lastname = tokens[1]; 
} 
else 
{ 
    name = "unknown"; 
    lastname = "user"; // or whatever 
} 
+0

謝謝你,這段代碼正在工作。我需要將'DBNull.Value'更改爲'null'才能工作。 –