Hej, detta är min första fråga på pellesoft.se, jag hoppas jag kan vara till hjälp men just det här har jag tokfastnat på eftersom jag är rätt ny på just C#. Detta är min aspx.cs-kod: DB eller resultView är null, tag reda på varför och du är på rätt väg.Object reference not set to an instance of an object.
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Configuration;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using Portal.DataBaseLogics;
public partial class _Default : System.Web.UI.Page
{
//DataView resultView;
DataBaseLogics DB = new DataBaseLogics();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Label1.Text = "THE FRONT 2006";
if (Request.QueryString["f"] != null)
{
LoadPics(Convert.ToInt16(Request.QueryString["f"]));
}
else
{
LoadPics(0);
}
}
}
protected void LinkButton1_Click(object sender, EventArgs e)
{
Response.Redirect("Default.aspx");
LoadPics(0);
}
protected void LinkButton2_Click(object sender, EventArgs e)
{
LoadPics(1);
}
protected void LinkButton3_Click(object sender, EventArgs e)
{
LoadPics(2);
}
protected void LoadPics(int fieldType)
{
int f;
if (Request.QueryString["f"] == null && fieldType == 0)
{
f = 0;
}
else if (Request.QueryString["f"] != null && fieldType == 0)
{
f = 0;
}
else if (Request.QueryString["f"] == null && fieldType != 0)
{
f = fieldType;
}
else if (Request.QueryString["f"] != null && fieldType != 0)
{
f = fieldType;
}
else
{
f = Convert.ToInt16(Request.QueryString["f"]);
}
//MessageBox.Show("f=" + f.ToString(), "caption", MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
if (Request.QueryString["p"] != null || f != 0)
{
int pid = Convert.ToInt16(Request.QueryString["p"]);
if (f == 0 || Request.QueryString["p"] != null)
{
//MessageBox.Show("Första steget och f=" + f.ToString(), "caption", MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
DB.ConnectToData("SELECT pid, date, path, type FROM monthlyPics WHERE pid = " + pid + " AND type = " + f + "", 0);
//MessageBox.Show("Så många f=" + resultView.Table.Rows.Count, "caption", MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
if (DB.resultView.Table.Rows.Count < 1)
{
DB.ConnectToData("SELECT pid, date, path, type FROM monthlyPics WHERE type = " + f + " ORDER BY pid DESC LIMIT 1", 0);
}
}
else
{
//MessageBox.Show("Här borta är f=" + f.ToString(), "caption", MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
DB.ConnectToData("SELECT pid, date, path, type FROM monthlyPics WHERE type = " + f + " ORDER BY pid DESC LIMIT 1", 0);
}
}
else
{
DB.ConnectToData("SELECT pid, date, path, type FROM monthlyPics WHERE type = " + f + " ORDER BY pid DESC LIMIT 1", 0);
}
switch(f)
{
case 0:
Label1.Text = "THE FRONT 2006";
break;
case 1:
Label1.Text = "THE SIDE 2006";
break;
case 2:
Label1.Text = "THE BACK 2006";
break;
default:
Label1.Text = "Error retrieving Label1.Text.";
break;
}
DB.resultView.Sort = "pid DESC";
DataList1.DataSource = DB.resultView;
DataList1.DataBind();
DB.ConnectToData("SELECT * FROM monthlyPics_tn WHERE type = " + f + " ORDER BY pid ASC", 0);
DataList2.DataSource = DB.resultView;
DataList2.DataBind();
}
}
och detta är klassen:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Security;
using MySql.Data.MySqlClient;
/// <summary>
/// Summary description for ConnectToData
/// </summary>
namespace Portal.DataBaseLogics
{
public class DataBaseLogics
{
public DataView resultView;
public void ConnectToData(string inCommand, int commandType)
{
DataView resultView;
string MyConString = ConfigurationManager.ConnectionStrings["MySQLConnectionString"].ConnectionString;
string dbError = "";
MySqlConnection connection = new MySqlConnection(MyConString);
connection.Open();
switch (commandType)
{
case 0:
try
{
DataTable result = new DataTable();
MySqlDataAdapter adapter = new MySqlDataAdapter(inCommand, connection);
adapter.Fill(result);
resultView = new DataView(result);
return;
}
catch (MySqlException ex)
{
dbError = "SELECT operation failed: " + ex + "";
resultView = new DataView();
}
finally
{
connection.Close();
}
break;
case 1:
try
{
MySqlCommand command = new MySqlCommand(inCommand, connection);
command.ExecuteNonQuery();
}
catch (MySqlException ex)
{
dbError = "UPDATE operation failed: " + ex + "";
}
finally
{
connection.Close();
}
break;
case 2:
try
{
MySqlCommand command = new MySqlCommand(inCommand, connection);
command.ExecuteNonQuery();
}
catch (MySqlException ex)
{
dbError = "DELETE operation failed: " + ex + "";
}
finally
{
connection.Close();
}
break;
default:
dbError = "No database operation selected.";
break;
}
}
}
}
Koderna kompilerar fint men exekveringen fastnar på:
Object reference not set to an instance of an object.
Line 119: DB.resultView.Sort = "pid DESC";
Jag har googlat mig blå på problem och mest hittat exempel där man ska ha behövt köra en .Copy på original-DataTable:n och sen utföra sort:en eller dylikt på denna... Tilläggas bör att tar jag bort sort:en på DataView:en så får jag samma fel på:
if (resultView.Table.Rows.Count < 1)
vilket torde betyda att det är något knas med just resultView-obejktet klasserna emellan.
Svar uppskattas och önskas!Sv: Object reference not set to an instance of an object.
Du kanske också ska testa om de är null innan du anropar dess egenskaper.
Här verkar det vara något du glömt?
if (resultView.Table.Rows.Count < 1)
borde varit
if (DB.resultView.Table.Rows.Count < 1)
?
Tips1: När du ställer frågor på nätet: försök skala ner ditt problem till mindre delar, väldigt få tycker det är roligt att läsa igenom all din källkod för att hjälpa dig hitta problemet.
Tips2: har du använt debuggern och stegat genom koden?
Det är oftast det snabbaste sättet att hitta problemen.
Stanna på den rad där det blir fel, inspektera variablerna.