Reputation: 2244
I have no problem in local. But I get this error in uploaded website:
Object reference not set to an instance of an object.
In this link it says this is a bug with ADO but I dont use ADO in my code.
Here is my code:
SqlConnection sc = new SqlConnection();
sc.ConnectionString = MyConnectionString;
sc.Open();
SqlCommand scm = new SqlCommand(INSERT COMMAND);
scm.Connection = sc;
scm.ExecuteNonQuery();
sc.Close();
I put my above code in USING
statements and nothing changed.
Here is my stack trace
NullReferenceException: Object reference not set to an instance of an object.]
Register.BtnRegister_Click(Object sender, ImageClickEventArgs e) +601
System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e) +115
System.Web.UI.WebControls.ImageButton.RaisePostBackEvent(String eventArgument) +120System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563
And here is BtnRegister_Click
code:
protected void BtnRegister_Click(object sender, ImageClickEventArgs e)
{
if (TxtName.Text == "" || TxtFamily.Text == "" || txtNationalCode.Text == "" || TxtIdNumber.Text == "" || txtMobile.Text == "" || TxtEmail.Text == "" || txtAddress.Text == "" || TxtSecurityCode.Text == "")
{
LblMsg.Text = "You should fill all fields";
return;
}
if (txtNationalCode.Text.Length != 10)
{
LblMsg.Text = "National code must have 10 digits";
return;
}
if (txtMobile.Text.Length != 11)
{
LblMsg.Text = "Mobile number should have 11 digits";
return;
}
if (T_Paticipant.GetDataByNationalCode(txtNationalCode.Text).Rows.Count > 0)
{
LblMsg.Text = "This national code used before";
return;
}
if (T_Paticipant.GetDataByEmail(TxtEmail.Text).Rows.Count > 0)
{
LblMsg.Text = "This email used before";
return;
}
LblMessage.Text = "Are you sure to register?";
LblFlag.Text = "0";
//captcha
if (this.Session["CaptchaImageText"].ToString().ToLower() == TxtSecurityCode.Text.ToLower())
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "showMessage()", "<script>ShowMessage() </script>");
}
else
{
LblMsg.ForeColor = System.Drawing.Color.Red;
LblMsg.Text = "Security code is wrong";
}
//end captcha
}
Thank you for help.
Upvotes: 0
Views: 12782
Reputation: 2244
Thank you everyone for help.
This error occurred because value of a session
was null and ToString()
method couldn't find any data to convert.
Upvotes: 0
Reputation: 263893
set the connectionstring
first before opening
SqlConnection sc = new SqlConnection();
sc.ConnectionString = MyConnectionString
SqlCommand scm = new SqlCommand(INSERT COMMAND);
scm.Connection = sc; // missing this.
sc.Open();
scm.ExecuteNonQuery();
sc.Close();
or
using (SqlConnection conn = new SqlConnection("connectionstringhere"))
{
using (SqlCommand comm = new SqlCommand())
{
comm.Connection = conn;
comm.CommandText = "your query";
comm.CommandType = CommandType.Text;
// comm.Parameters.AddWithValue("@paramName","value"); // if you have parameters
try
{
conn.Open();
comm.ExecuteNonQuery();
}
catch(SqlException ex)
{
// error here
// ex.Message.Tostring // holds the error message
}
}
}
Upvotes: 2