2012-02-28 70 views
0

我試圖找回在SQL數據庫
保存後,突然我得到了的NullReferenceException是未處理的填充陣列 - C#

的NullReferenceException是在填滿陣列未處理的所有名稱 - 對象 參考未設置爲對象的實例。

,這是我的代碼:

我在

imgName[i] = Convert.ToString(dt.Rows[i]["FinalImageName"]); 
在該部分

得到了錯誤,我想填補imgName陣列中的所有名稱

我怎麼能修復它嗎,請幫助

string c_string = "server=.\\sqlexpress;database=Blue;trusted_connection=true"; 

public static string ImageToShow; 
private int NumOfFiles; 
private string[] imgName; 

SqlConnection c = new SqlConnection(c_string); 
//SqlCommand cm = new SqlCommand(cmd,c); 

private void frmMain_Load(object sender, EventArgs e) { 
    SqlConnection c = new SqlConnection(c_string); 

    try { 
     c.Open(); 
    } 
    catch (SqlException ee) { 
     MessageBox.Show(ee.Message); 
    } 
    finally { 
     c.Close(); 
    } 
    updateData(); 
} 

private void updateData() { 

    SqlConnection c = new SqlConnection(c_string); 

    SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM FinalImages", c); 

    DataTable dt = new DataTable(); 
    da.Fill(dt); 

    NumOfFiles = dt.Rows.Count; 
    for (int i = 0; i < dt.Rows.Count; i++) { 
     imgName[i] = Convert.ToString(dt.Rows[i]["FinalImageName"]); 

    } 
}​ 
+0

等等!爲什麼在關閉連接後調用'updatedata'?不計算。 – leppie 2012-02-28 07:03:53

回答

1

那是因爲你有未指定數組的大小......無論是指定數組或使用ArrayList的大小/泛型列表

試試這個: 包括命名空間:using System.Collections.Generic;

string c_string = "server=.\\sqlexpress;database=Blue;trusted_connection=true"; 

    public static string ImageToShow; 
    private int NumOfFiles; 
    //private string[] imgName; 
    List<string> imgName= new List<string>(); 

SqlConnection c = new SqlConnection(c_string); 
     //SqlCommand cm = new SqlCommand(cmd,c); 


    private void frmMain_Load(object sender, EventArgs e) 
    { 
     SqlConnection c = new SqlConnection(c_string); 

     try 
     { 
      c.Open(); 
     } 
     catch (SqlException ee) 
     { 
      MessageBox.Show(ee.Message); 
     } 
     finally 
     { 
      c.Close(); 
     } 
     updateData(); 
    } 

private void updateData() 
    { 

     SqlConnection c = new SqlConnection(c_string); 

     SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM FinalImages", c); 

     DataTable dt = new DataTable(); 
     da.Fill(dt); 

     NumOfFiles = dt.Rows.Count; 
     for (int i = 0; i < dt.Rows.Count; i++) 
     { 
      // imgName[i] = Convert.ToString(dt.Rows[i]["FinalImageName"]); 
      imgName.Add(Convert.ToString(dt.Rows[i]["FinalImageName"])); 
     } 
    } 
1

您還沒有創建一個數組,你只有創建了可以保存對數組的引用的變量。

創建陣列,一旦你知道有多少行是:

imgName = new string[dt.Rows.Count]; 
2

您需要實例化imgName陣列。

private void updateData() 
{ 
    { 

     SqlConnection c = new SqlConnection(c_string); 

     SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM FinalImages", c); 

     DataTable dt = new DataTable(); 
     da.Fill(dt); 

     NumOfFiles = dt.Rows.Count; 
     imgName = new string[NumOfFiles]; 
     for (int i = 0; i < NumOfFiles; i++) 
     { 
      imgName[i] = Convert.ToString(dt.Rows[i]["FinalImageName"]); 

     } 
    } 
}