I am trying to retrieve all names that was saved at the sql database
then suddenly I got the
nullreferenceexception was unhandled on filling up array - Object reference not set to an instance of an object.
this was my code:
I got the error at the
imgName[i] = Convert.ToString(dt.Rows[i]["FinalImageName"]);
in that part, I'd like to fill imgName array all the name
how could i fix it?, help please
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"]);
}
}
You need to instantiate the imgName
array .
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"]);
}
}
}
That is because you have not specified the size of array... either specify size of array or use arraylist / generic list
Try this: include namespace : 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"]));
}
}
You haven't created an array, you have only created the variable that can hold the reference to the array.
Create the array once you know how many rows there are:
imgName = new string[dt.Rows.Count];
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.