2016-08-31 8 views
0

フォームからデータベースに入力されたユーザーデータを保存しようとしても、例外はスローされ続けます。私はコーディング時には新しく、あなたが提供できるあらゆる助けに感謝します。ここに私のコードです。私は、フォームのフィールドにデータを入力データベースにデータを保存しようとするとC#とASP.NETで例外処理が発生する

C#

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 
using System.Configuration; 
using System.Data; 

public partial class subscribe_Registration : System.Web.UI.Page 
{ 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    Registration.Registration reg = new Registration.Registration(); 

    reg.Name = txtName.Text; 
    reg.Age = Int32.Parse(txtAge.Text); 
    reg.Sex = txtSex.Text; 
    reg.Address = txtAddress.Text; 
    reg.Email = txtEmail.Text; 
    reg.Phone = Int32.Parse(txtPhone.Text); 

    this.InsertRegistration(reg); 
    phSuccess.Visible = true; 
} 

public void InsertRegistration(Registration.Registration reg) 
{ 
    try 
    { 
     using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Database"].ConnectionString)) 
     { 
      using (var cmd = new SqlCommand("dbo.Procedure", conn)) 
      { 
       cmd.CommandType = CommandType.StoredProcedure; 

       var parameterName = new SqlParameter("@Name", SqlDbType.VarChar, 50); 
       var parameterAge = new SqlParameter("@Age", SqlDbType.VarChar, 50); 
       var parameterSex = new SqlParameter("@Sex", SqlDbType.VarChar, 50); 
       var parameterAddress = new SqlParameter("@Address", SqlDbType.VarChar, 50); 
       var parameterEmail = new SqlParameter("@Email", SqlDbType.VarChar, 100); 
       var parameterPhone = new SqlParameter("@Phone", SqlDbType.VarChar, 100); 

       cmd.Parameters.Add(parameterName); 
       cmd.Parameters.Add(parameterAge); 
       cmd.Parameters.Add(parameterSex); 
       cmd.Parameters.Add(parameterAddress); 
       cmd.Parameters.Add(parameterEmail); 
       cmd.Parameters.Add(parameterPhone); 

       cmd.Parameters.Add(parameterName); 
       cmd.Parameters.Add(parameterAge); 
       cmd.Parameters.Add(parameterSex); 
       cmd.Parameters.Add(parameterAddress); 
       cmd.Parameters.Add(parameterEmail); 
       cmd.Parameters.Add(parameterPhone); 

       conn.Open(); 
       cmd.ExecuteNonQuery(); 
       conn.Close(); 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
     throw ex; 
    } 
} 
} 

私のクラスだけでなく

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Data; 
using System.Configuration; 
using System.Data.SqlClient; 

namespace Registration 
{ 
public class Registration 
{ 
    public string Name { get; set; } 
    public int Age { get; set; } 
    public string Sex { get; set; } 
    public string Address { get; set; } 
    public string Email { get; set; } 
    public int Phone { get; set; } 
}  
} 

私のデータベースプロシージャ

CREATE PROCEDURE [dbo].[Procedure] 
@Name VARCHAR(50), 
@Age VARCHAR(50), 
@Sex VARCHAR(50), 
@Address VARCHAR(50), 
@Email VARCHAR(100), 
@Phone VARCHAR(100) 
AS 
BEGIN 
SET NOCOUNT ON; 

INSERT INTO Users(Name, Age, Sex, [Address], Email, Phone) 
VALUES(@Name, @Age, @Sex, @Address, @Email, @Phone) 
END 
GO 

たびに、それはの例外が表示されます

System.NullReferenceException was unhandled by user code 
HResult=-2147467261 
Message=Object reference not set to an instance of an object. 
Source=App_Web_5rrjgvhs 
StackTrace: 
    at subscribe_Registration.InsertRegistration(Registration reg) in c:\Users\*mycomputer*\Documents\Visual Studio 2015\WebSites\WebSite1\subscribe\Registration.aspx.cs:line 68 
    at subscribe_Registration.Button1_Click(Object sender, EventArgs e) in c:\Users\*mycomputer*\Documents\Visual Studio 2015\WebSites\WebSite1\subscribe\Registration.aspx.cs:line 25 
    at System.Web.UI.WebControls.Button.OnClick(EventArgs e) 
    at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) 
    at System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) 
    at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) 
    at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) 
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 
InnerException: 

私はプログラミングでかなり新しいので、まだ学習しています。

何か間違っていますか?誰かがなぜこれが起こっているのか説明できますか?どんな助けでも大歓迎です。

+0

パラメータに値を追加していますか? – Sami

答えて

0

パラメータに値を指定していません。パラメータを定義した後に、パラメータの.Valueプロパティが次の行に設定されていることを下のコードで確認してください。

public void InsertRegistration(Registration.Registration reg) 
{ 
    try 
    { 
     using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Database"].ConnectionString)) 
     { 
      using (var cmd = new SqlCommand("dbo.Procedure", conn)) 
      { 
       cmd.CommandType = CommandType.StoredProcedure; 

       var parameterName = new SqlParameter("@Name", SqlDbType.VarChar, 50); 
       parameterName.Value = reg.Name; 
       var parameterAge = new SqlParameter("@Age", SqlDbType.VarChar, 50); 
       parameterAge.Value = reg.Age; 
       var parameterSex = new SqlParameter("@Sex", SqlDbType.VarChar, 50); 
       parameterSex.Value = reg.Sex; 
       var parameterAddress = new SqlParameter("@Address", SqlDbType.VarChar, 50); 
       parameterAddress.Value = reg.Address; 
       var parameterEmail = new SqlParameter("@Email", SqlDbType.VarChar, 100); 
       parameterEmail.Value = reg.Email; 
       var parameterPhone = new SqlParameter("@Phone", SqlDbType.VarChar, 100); 
       parameterPhone.Value = reg.Phone; 

       cmd.Parameters.Add(parameterName); 
       cmd.Parameters.Add(parameterAge); 
       cmd.Parameters.Add(parameterSex); 
       cmd.Parameters.Add(parameterAddress); 
       cmd.Parameters.Add(parameterEmail); 
       cmd.Parameters.Add(parameterPhone); 

       conn.Open(); 
       cmd.ExecuteNonQuery(); 
       conn.Close(); 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
     throw ex; 
    } 
} 

また、パラメータを2回追加しています。コマンドにパラメータを追加する2番目のセットを削除しました。

+0

はい、私はまだ同じ例外を受けています.... – user6725507

+0

試しにキャッチして例外メッセージをここに貼り付けてください –

+0

試しにキャッチを削除してもエラーは表示されません。しかし、データはテーブルに書き込まれていません... – user6725507

関連する問題