2016-03-26 9 views
0

C#からSQL Serverへの接続を作成しようとしていて、NullReferenceExceptionが発生しました。C#system.nullreferenceExceptionユーザーコードで処理されない

私は試してみたことがあるかもしれませんが、私の問題の治療法は見つかりませんでした。エラーはline 3に発生しました。 SQL ServerとC#コードの間の接続の問題かもしれません。ログインフォームの

protected void Button1_Click(object sender, EventArgs e) 
{ 
    int userId = 0; 
    string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; 
    using (SqlConnection con = new SqlConnection(constr)) 
    { 
     using (SqlCommand cmd = new SqlCommand("Insert_User")) 
     { 
      using (SqlDataAdapter sda = new SqlDataAdapter()) 
      { 
       cmd.CommandType = CommandType.StoredProcedure; 
       cmd.Parameters.AddWithValue("@Username", TextBoxUN.Text.Trim()); 
       cmd.Parameters.AddWithValue("@Email", TextBoxEmail.Text.Trim()); 
       cmd.Parameters.AddWithValue("@Password", TextBoxPswd.Text.Trim()); 
       cmd.Connection = con; 
       con.Open(); 
       userId = Convert.ToInt32(cmd.ExecuteScalar()); 
       con.Close(); 
      } 
     } 
     string message = string.Empty; 
     switch (userId) 
     { 
      case -1: 
       message = "Username already exists.\\nPlease choose a different username."; 
       break; 
      case -2: 
       message = "Supplied email address has already been used."; 
       break; 
      default: 
       message = "Registration successful.\\nUser Id: " + userId.ToString(); 
       break; 
     } 
     ClientScript.RegisterStartupScript(GetType(), "alert", "alert('" + message + "');", true); 
    } 

HTMLコード以下の通りです:

<table class="auto-style1"> 
     <tr> 
      <td class="auto-style2">Username</td> 
      <td class="auto-style3"> 

       <asp:TextBox ID="TextBoxUN" runat="server" OnTextChanged="TextBoxUN_TextChanged" Width="180px"></asp:TextBox> 

      </td> 
      <td> 
       <asp:RequiredFieldValidator ID="Label1" runat="server" ControlToValidate="TextBoxUN" ErrorMessage="Username is required" ForeColor="Red"></asp:RequiredFieldValidator> 
      </td> 
     </tr> 
     <tr> 
      <td class="auto-style4">&nbsp;</td> 
      <td class="auto-style5">&nbsp;</td> 
      <td class="auto-style6">&nbsp;</td> 
     </tr> 
     <tr> 
      <td class="auto-style2">E-mail</td> 
      <td class="auto-style3"> 
       <asp:TextBox ID="TextBoxEmail" runat="server" Width="180px"></asp:TextBox> 
      </td> 
      <td> 
       <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="TextBoxEmail" ErrorMessage="E-mail is required" ForeColor="Red"></asp:RequiredFieldValidator> 
       <br /> 
       <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="TextBoxEmail" ErrorMessage="E-mail entered is not correct" ForeColor="Red" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator> 
      </td> 
     </tr> 
     <tr> 
      <td class="auto-style2">Password</td> 
      <td class="auto-style3"> 
       <asp:TextBox ID="TextBoxPswd" runat="server" TextMode="Password" Width="180px"></asp:TextBox> 
      </td> 
      <td> 
       <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ControlToValidate="TextBoxPswd" ErrorMessage="Password is required" ForeColor="Red"></asp:RequiredFieldValidator> 
      </td> 
     </tr> 
     <tr> 
      <td class="auto-style2">Confirm-Password</td> 
      <td class="auto-style3"> 
       <asp:TextBox ID="TextBoxRPswd" runat="server" TextMode="Password" Width="180px"></asp:TextBox> 
      </td> 
      <td> 
       <asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server" ControlToValidate="TextBoxRPswd" ErrorMessage="Confirm your password" ForeColor="Red"></asp:RequiredFieldValidator> 
       <br /> 
       <asp:CompareValidator ID="CompareValidator1" runat="server" ControlToCompare="TextBoxPswd" ControlToValidate="TextBoxRPswd" ErrorMessage="Enter Correct Password" ForeColor="Red"></asp:CompareValidator> 
      </td> 
     </tr> 
     <tr> 
      <td class="auto-style7"></td> 
      <td class="auto-style8"></td> 
      <td class="auto-style9"></td> 
     </tr> 
     <tr> 
      <td class="auto-style2">&nbsp;</td> 
      <td class="auto-style3">&nbsp;</td> 
      <td>&nbsp;</td> 
     </tr> 
    </table> 
    <asp:Button ID="Button1" runat="server" BorderStyle="Ridge" OnClick="Button1_Click" Text="Register" /> 
    <input id="Reset1" type="reset" value="reset" /> 
+0

は、デバッグポイントを設定して確認できます願っています。 –

答えて

0

私はあなたが何を任命していなかったとして、エラーが、理由SqlDataAdapterオブジェクトであると思います。ここ

は、C#のコードがあります。また、1つの値に対してSqlDataAdapterは必要ありません。あなたのコードがに変更します。

int userId = 0; 
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; 
using (SqlConnection con = new SqlConnection(constr)) 
{ 
    using (SqlCommand cmd = new SqlCommand("Insert_User", con)) 
    { 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.AddWithValue("@Username", TextBoxUN.Text.Trim()); 
     cmd.Parameters.AddWithValue("@Email", TextBoxEmail.Text.Trim()); 
     cmd.Parameters.AddWithValue("@Password", TextBoxPswd.Text.Trim()); 
     try 
     { 
      con.Open(); 
      userId = Convert.ToInt32(cmd.ExecuteScalar().ToString()); 
     } 
     catch(Exception ex) 
     { 
      Response.Write("<script language='javascript'>alert('" + ex.Message.ToString() + "');</script>");//It will throw an alert with an exception 
     } 
     finally 
     { 
      con.Close(); 
     } 
    } 
    string message = string.Empty; 
    switch (userId) 
    { 
     case -1: 
      message = "Username already exists.\\nPlease choose a different username."; 
      break; 
     case -2: 
      message = "Supplied email address has already been used."; 
      break; 
     default: 
      message = "Registration successful.\\nUser Id: " + userId.ToString(); 
      break; 
    } 
    ClientScript.RegisterStartupScript(GetType(), "alert", "alert('" + message + "');", true); 
} 
あなたの質問に行を指定した後、エラーが実際に起こって整列することが

+0

ありがとうございました:D – rohillasarthak

+0

@rohillasarthakようこそ – Khazratbek

関連する問題