![](/img/trans.png)
[英]Object reference not set to an instance of an object - Null Reference Exception
[英]Object not set to an instance of an object in sql query, null reference exception
在這種情況下,我得到了空引用異常,但我無法解決。
public class Tiket
{
private Korisnik korisnik;
public Korisnik Korisnik
{
get { if (korisnik == null)
{
korisnik = new Korisnik();
}
return korisnik; }
set { korisnik = value; }
}
}
在表單內部,我采用插入文本框中的值並將其發送給處理數據庫的方法(它要復雜得多,但我試圖使其變得簡單):
Tiket t = new Tiket();
t.Korisnik.Ime = txtImeKorisnika.Text;
thatMethod(t);
因此,在上面給t.Korisnik.Ime賦值時,沒有得到null引用異常,但是在Inside方法中卻得到了一個:
string upit = "SELECT * FROM " + Tiket + " " + " WHERE " + t.Korisnik.Ime;
與此主題相關的一個額外問題:嘗試向數據庫中的這些字段(也是Tiket內的類屬性)添加值時遇到相同的問題。
tikeet.Korisnik.JMBG = red[5].ToString();
tikeet.Radnik.SifraRadnika = Convert.ToInt32(red[6]);
我知道為什么會這樣,但是我不知道如何在這里初始化Korisnik和Radnik。
編輯:我希望這對您有所幫助,所以您可以幫助我! 我有客戶端服務器應用程序,我正在將Tiket發送到Server ..而不是作為OpstiDomenskiObjekat(而不是Tiket)發送給我現在有問題的方法。
OpstiDomenskiObjekat是接口,因此我可以使用一種或幾種方法來處理許多我需要的類似東西。
public List<OpstiDomenskiObjekat> vratiZaUslovJedanPlus(OpstiDomenskiObjekat odo)
{
string upit = "SELECT * FROM " + odo.tabela + " " + " WHERE " + odo.uslovJedan;
OleDbDataReader citac = null;
OleDbCommand komanda = new OleDbCommand(upit, konekcija, transakcija);
try
{
citac = komanda.ExecuteReader(); // **here is exception thrown**
DataTable tabela = new DataTable();
tabela.Load(citac);
List<OpstiDomenskiObjekat> lista = new List<OpstiDomenskiObjekat>();
foreach (DataRow red in tabela.Rows)
{
OpstiDomenskiObjekat pom = odo.napuni(red);
lista.Add(pom);
}
return lista;
}
catch (Exception ex)
{
throw ex;
}
//這是Tiket類中的實現
public string uslovJedan
{
get
{
return Korisnik.Ime;
}
}
//這應該在方法之后發生,我將根據需要使用List
List<Tiket> lista = Broker.dajSesiju().vratiZaUslovJedanPlus(odo).OfType<Tiket>().ToList<Tiket>();
return lista;
連接,交易等。所有其他地方都可以,但是我保證:)
在這種情況下, +運算符是字符串連接運算符。 票證是您班級的名稱,尚不清楚您是否擁有同名的物業。 如果您確實擁有該名稱的屬性,
string upit = "SELECT * FROM " + Tiket + " " + " WHERE " + t.Korisnik.Ime;
上一行可能由於Tiket
屬性為null而失敗。 而且,它的ToString()
可能對查詢的FROM子句無效。
更新
如您所見,它根本不適合我編譯。 當我寫了一個同名的屬性時。 它編譯並構造了字符串,在Ticket所在的位置插入了一個空字符。
第二張屏幕截圖顯示了如果它是一個屬性會發生什么。
在這種情況下,您的字符串仍會被構造,並且在string upit = "SELECT * FROM " + Tiket + " " + " WHERE " + t.Korisnik.Ime;
處將得到無效的查詢string upit = "SELECT * FROM " + Tiket + " " + " WHERE " + t.Korisnik.Ime;
這可能是造成您的問題的原因。 請使用拋出異常的屏幕截圖進行更新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.