2016-02-02 17 views
-3

這裏是我的代碼對象引用未設置到對象的實例在SQL ExecuteScalar方法

public string teacherfromdepart() 
{ 
    string programme = null; 
    this.obj = null; 
    using(SqlConnection con = new SqlConnection()) 
    { 
     con.ConnectionString = Databaseconnection.ConnectionString; 
     con.Open(); 
     using(SqlCommand cmd = new SqlCommand()) 
     { 
      cmd.Connection = con; 
      cmd.CommandText = "Select [FID] FROM [NewFaculty] WHERE [FullName] = 
                   '"+this.listBox1.Text+"'"; 
      this.obj = cmd.ExecuteScalar(); 
      cmd.CommandText = "SELECT [AssignedProgramme] FROM [Assignprogramme]" + 
                "WHERE ([FID] = '"+obj.ToString()+"')"; 
      using(SqlDataReader dr = cmd.ExecuteReader()) 
      {   
       while(dr.Read()) 
        programme += dr["AssignedProgramme"].ToString() + ", "; 
       lblTeacherProgramme.Text = "This teacher Can teach " + programme; 
       return programme; 
      } 
     } 
    } 
} 

我正準備從數據庫系ID,並用它來獲取一些相關數據。 每當我關閉這個表格,並得到這個錯誤:http://prntscr.com/9y5jkr

+1

沒有足夠的信息在這裏;什麼行引發異常?另外,使用參數。像這樣的查詢字符串是不好的,因爲SQL注入。 – Nikki9696

+0

某些值爲空。在調試器中運行它並確定哪一個。或者看看發生錯誤的行,看看有什麼可能是空的。 –

+2

http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it – Jens

回答

1

你的截圖錯誤說明了一切:

你得到您的obj變量爲空值,因此誤差被第二SQL命令拋出。

cmd.CommandText = "SELECT [AssignedProgramme] FROM [Assignprogramme] WHERE ([FID] = '"+obj.ToString()+"')" 

添加一些驗證以確保您的obj不爲NULL。

也作爲一個評論提到,使用SQL參數。這很容易被SQL注入。

+0

非常感謝我的問題已成功地解決了好心給任何參考鏈接,如何使用sql參數。 –

+0

這是一個。 http://stackoverflow.com/questions/293311/whats-the-best-method-to-pass-parameters-to-sqlcommand – Batuta

相關問題