當我運行我的代碼時,它告訴我adr的對象爲空,而且這是真的,但爲什麼在它工作在相同方法的副本中時不工作,插入的替代而不是選擇。將不會接受C#中的空對象
的代碼如下所示:
public City doesExist(string postnr, string navn, City city, SqlConnection con)
{
DatabaseConnection.openConnection(con);
using (var command = new SqlCommand("select Id from [By] where Postnummer='" + postnr + "' and Navn='" + navn + "'", con))
{
command.Connection = con;
SqlDataReader reader = command.ExecuteReader();
if (reader.Read())
{
city.id = reader.GetInt32(0);
city.postnr = postnr;
city.navn = navn;
reader.Close();
return city;
}
reader.Close();
return null;
}
}
public City create(string postnr, string navn, City city, SqlConnection con)
{
DatabaseConnection.openConnection(con);
using (var command = new SqlCommand("insert into [By] (Postnummer, Navn) values ('" + postnr + "', '" + navn + "'); select @@identity as 'identity';", con))
{
object ID = command.ExecuteScalar();
city.id = Convert.ToInt32(ID);
city.postnr = postnr;
city.navn = navn;
return city;
}
}
調用看起來是這樣的:
City city = new City();
city = city.doesExist(zip, by, city, connection); // this works fine
if (city == null)
{
// I know that city is null
// tried inserting City city = new City(); same error
city = city.create(zip, by, city, connection); // this is where the null error occours
}
爲什麼'create'方法是'City'類的實例方法?當然它會拋出異常。畢竟,「城市」是空的,不是嗎? – Groo 2013-03-06 13:28:51
不是'創建'方法需要'靜態'嗎? – Arran 2013-03-06 13:29:15
請注意,您的'doesExist'方法還會輸入未使用的輸入'city'參數,應該將其刪除。實際上,這兩種方法看起來都像存儲庫方法,即它們不應該是城市類的**實例**方法(因爲它們不屬於單個城市實例)。 – Groo 2013-03-06 13:31:29