Click here to Skip to main content
15,899,679 members
Please Sign up or sign in to vote.
2.00/5 (1 vote)
See more:
I have the following code on my class:
C#
public void addproduct()
    {
        string Lname = AddEmployee._emp.txtEmpLname.Text.ToString();
        string Fname = AddEmployee._emp.txtEmpFname.Text.ToString();
        string EmpDepart = AddEmployee._emp.drpDepartment.SelectedValue.ToString();
        string EmpStatus = AddEmployee._emp.drpStatus.SelectedValue.ToString();
        string AddName = Lname + "," + "  " + Fname;

        SQcon.Open();
        SQcmd = new SqlCommand("INSERT INTO ProductRecord Values ('" +AddName + "' , '" + EmpDepart + "' , '" + EmpStatus + "')",SQcon);
        SQcmd.ExecuteNonQuery();

        SQread.Close();
        SQcon.Close();
    }



and on my code behind:
C#
protected void btnSubmit_Click(object sender, EventArgs e)
        {
            DatabaseModule.addproduct();
        }



and I'm getting this error
object reference not set to an instance of an object

how do I resolve this
Posted
Comments
On which line?
JB0301 31-Mar-14 23:26pm    
here:
string Lname = AddEmployee._emp.txtEmpLname.Text.ToString();
string Fname = AddEmployee._emp.txtEmpFname.Text.ToString();
string EmpDepart = AddEmployee._emp.drpDepartment.SelectedValue.ToString();
string EmpStatus = AddEmployee._emp.drpStatus.SelectedValue.ToString();
[no name] 1-Apr-14 0:47am    
In which line you got that error

First of all, the property Text should be already of a string type, but you are calling ToString() on it, to get the same very string. This is totally pointless.

And you still did not show where the exception with the message "Object reference not set to an instance of an object" is thrown. You could see it from the exception stack of from the debugger. What this exception tells you if it is thrown on the expression AddEmployee._emp.txtEmpLname.Text.ToString()? It means that AddEmployee can be null, otherwise AddEmployee._emp can be null, otherwise AddEmployee._emp.txtEmpLname can be null, and finally, AddEmployee._emp.txtEmpLname.Text can be null. You could have examined this expression under the debugger.

After all, you cannot ask for help every time something like that happens; you need to be able to do it by yourself.

Not to worry. This is one of the very easiest cases to detect and fix. It simply means that some member/variable of some reference type is dereferenced by using and of its instance (non-static) members, which requires this member/variable to be non-null, but in fact it appears to be null. Simply execute it under debugger, it will stop the execution where the exception is thrown. Put a break point on that line, restart the application and come to this point again. Evaluate all references involved in next line and see which one is null while it needs to be not null. After you figure this out, fix the code: either make sure the member/variable is properly initialized to a non-null reference, or check it for null and, in case of null, do something else.

Please see also: want to display next record on button click. but got an error in if condition of next record function "object reference not set to an instance of an object"[^].

Sometimes, you cannot do it under debugger, by one or another reason. One really nasty case is when the problem is only manifested if software is built when debug information is not available. In this case, you have to use the harder way. First, you need to make sure that you never block propagation of exceptions by handling them silently (this is a crime of developers against themselves, yet very usual). The you need to catch absolutely all exceptions on the very top stack frame of each thread. You can do it if you handle the exceptions of the type System.Exception. In the handler, you need to log all the exception information, especially the System.Exception.StackTrace:
http://msdn.microsoft.com/en-us/library/system.exception.aspx[^],
http://msdn.microsoft.com/en-us/library/system.exception.stacktrace.aspx[^].

The stack trace is just a string showing the full path of exception propagation from the throw statement to the handler. By reading it, you can always find ends. For logging, it's the best (in most cases) to use the class System.Diagnostics.EventLog:
http://msdn.microsoft.com/en-us/library/system.diagnostics.eventlog.aspx[^].

Good luck,
—SA
 
Share this answer
 
Comments
JB0301 1-Apr-14 3:49am    
I was able to fix it by this: public static Default _def = new Default();
_def = this;

thanks for your explanation. I'm sorry for posting a question that was indeed easy to find a solution, I just ran out of logic.
Sergey Alexandrovich Kryukov 1-Apr-14 6:32am    
No problem, please, no need to apologize. My explanation is designed to cover such cases. Are you going to accept it formally (green "Accept" button)?
—SA
I was able to fix this by putting the following codes on my codebehind

C#
public static Default _def = new Default();

C#
_def = this;


Thankyou for your answers
 
Share this answer
 
I think DataBaseModule is not initialized thats why ur getting that exception
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900