2016-09-02 7 views
0

フォームに詳細を挿入して挿入ボタンをクリックすると、「ユーザーが正常に追加されました」と表示されます。しかし、データはテーブルに挿入されません。また、F12キーを押してブラウザのエラーをチェックしようとすると、オブジェクトconがnullであることが示されます。これを解決するには?事前に感謝Ajax関数は実行されますが、データはデータベースに挿入されません

C#のウェブ方法:

[WebMethod] 
public static void InsertData(ConsigneeMast Consignee) 
{ 
    using(var scon = new SqlConnection(strConnection)) 
    { 
     using(var cmd = new SqlCommand()) 
     { 
       cmd.CommandText = "AddInConsigneeTable"; 
       cmd.CommandType = CommandType.StoredProcedure; 
       cmd.Connection = scon; 

       cmd.Parameters.AddWithValue("@Code",Consignee.Code); 
       cmd.Parameters.AddWithValue("@Name",Consignee.Name); 
       cmd.Parameters.AddWithValue("@Address1",Consignee.Address1); 
       cmd.Parameters.AddWithValue("@Address2",Consignee.Address2); 
       cmd.Parameters.AddWithValue("@Address3",Consignee.Address3); 
       cmd.Parameters.AddWithValue("@City",Consignee.City); 
       cmd.Parameters.AddWithValue("@PinCode",Consignee.Pincode); 
       cmd.Parameters.AddWithValue("@Country",Consignee.Country); 
       cmd.Parameters.AddWithValue("@TelNo1",Consignee.TelNo1); 
       cmd.Parameters.AddWithValue("@TelNo2",Consignee.TelNo2); 
       cmd.Parameters.AddWithValue("@TelNo3",Consignee.TelNo3); 
       cmd.Parameters.AddWithValue("@EmailID",Consignee.EmailID); 
       cmd.Parameters.AddWithValue("@ContactPerson",Consignee.ContactPerson); 
       cmd.Parameters.AddWithValue("@Remark",Consignee.Remark); 
      } 
    } 
} 

のAjax、jQueryのコード:

$(document).ready(function() { 
    $("#btnInsertInConsignee").click(function() { 
     var con = {}; 
     debugger; 
     con.Name = $("#ConsigneeName").val(); 
     con.Address1 = $("#RegOfficeAddress1").val(); 
     con.Address2 = $("#RegOfficeAddress2").val(); 
     con.Address3 = $("#RegOfficeAddress3").val(); 
     con.City = $("#City").val(); 
     con.Country = $("#CountryAddress").val(); 
     con.Pincode = $("#PinCode").val(); 
     con.TelNo1 = $("#TelephoneNo").val(); 
     con.TelNo2 = $("#FaxNo").val(); 
     con.TelNo3 = $("#MobileNo").val(); 
     con.ContactPerson = $("#ContactPerson").val(); 
     con.EmailID = $("#Email").val(); 
     con.Remark = $("#Remark").val(); 

     $.ajax({ 
        type: "POST", 
        url: "ConsigneeWithBoot.aspx/InsertData", 
        data: '{Consignee: ' + JSON.stringify(con) + '}', 
        dataType: "json", 
        contentType: "application/json; charset=utf-8", 
        success: function() { 
         debugger; 
         alert("User has been added successfully."); 
         debugger; 

         //window.location.reload(); 
        }, 
        error: function() { 
         debugger; 
         alert("Error while inserting data"); 
        } 
       }); 
       return false; 

      }); 

     }); 

SQL Serverのストアドプロシージャ:

ALTER PROCEDURE [dbo].[AddInConsigneeTable] 
    @Code nvarchar(6) = '', 
    @Name nvarchar(75), 
    @Address1 nvarchar(75), 
    @Address2 nvarchar(75), 
    @Address3 nvarchar(75), 
    @City nvarchar(15), 
    @PinCode nvarchar(10), 
    @Country nvarchar(40), 
    @TelNo1 nvarchar(50), 
    @TelNo2 nvarchar(50), 
    @TelNo3 nvarchar(50), 
    @EmailID nvarchar(250), 
    @ContactPerson nvarchar(75), 
    @Remark nvarchar(max) 
as begin 
    declare @Totalcount int 
    declare @Count nvarchar(10) 

    select @Totalcount = (select COUNT(Code) from ConsigneeMast) 

    if @Totalcount is null 
     set @Count = 'A' + CONVERT(nvarchar(10), 1001) 
    else 
     set @Count = 'A' + CONVERT(nvarchar(10), 1001 + (@Totalcount)) 

    insert into ConsigneeMast ([Code], [Name], [Address1], [Address2],[Address3], [City], [Country], [Pincode], [TelNo1], [TelNo2], [TelNo3],[ContactPerson], [EmailID], [Remark]) 
    values (upper(@Count), upper(@Name), upper(@Address1), upper(@Address2), upper(@Address3), upper(@City), upper(@Country), upper(@PinCode), upper(@TelNo1), upper(@TelNo2), upper(@TelNo3), upper(@ContactPerson), upper(@EmailID), upper(@Remark)) 
end 
+0

あなたが投稿したものから、 'InsertData'関数は決してExecuteNonQueryコマンドを呼びません。関数はエラーなしで実行されるので、SuccessはAJAX呼び出しによって受け取られます。 –

+0

ありがとうございました...投稿者... –

+0

[AddWithValue()を既に使用していますか?](http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we)をチェックしてください。 -stop-using-addwithvalue-already /) '.AddWithValue()'の使用を止めます - 予期しない驚くべき結果につながります –

答えて

0

InserData機能任意のExecuteNonQueryを呼び出すdosen'tデータベースコマンドでデータを保持します。

public static void InsertData(ConsigneeMast Consignee) 
    { 
     using(var scon=new SqlConnection(strConnection)) 
     { 
      using(var cmd=new SqlCommand()) 
      { 
       scon.open(); 
       cmd.CommandText = "AddInConsigneeTable"; 
       cmd.CommandType = CommandType.StoredProcedure; 
       cmd.Connection = scon; 

       cmd.Parameters.AddWithValue("@Code",Consignee.Code); 
       cmd.Parameters.AddWithValue("@Name",Consignee.Name); 
       cmd.Parameters.AddWithValue("@Address1",Consignee.Address1); 
       cmd.Parameters.AddWithValue("@Address2",Consignee.Address2); 
       cmd.Parameters.AddWithValue("@Address3",Consignee.Address3); 
       cmd.Parameters.AddWithValue("@City",Consignee.City); 
       cmd.Parameters.AddWithValue("@PinCode",Consignee.Pincode); 
       cmd.Parameters.AddWithValue("@Country",Consignee.Country); 
       cmd.Parameters.AddWithValue("@TelNo1",Consignee.TelNo1); 
       cmd.Parameters.AddWithValue("@TelNo2",Consignee.TelNo2); 
       cmd.Parameters.AddWithValue("@TelNo3",Consignee.TelNo3); 
       cmd.Parameters.AddWithValue("@EmailID",Consignee.EmailID); 
       cmd.Parameters.AddWithValue("@ContactPerson",Consignee.ContactPerson); 
       cmd.Parameters.AddWithValue("@Remark",Consignee.Remark); 
       cmd.ExecuteNonQuery(); 
      } 
     } 
    } 
0

あなたはコメントで述べたように、すべてのパラメータ

scon.Open(); 
    cmd.ExecuteNonQuery(); 
0

を追加した後に次の2行のコードが欠落している、あなたはInsertData方法で呼び出しを使用してストアドプロシージャを実行する必要があります。このようにそれを修正する

試してみてください。

public static void InsertData(ConsigneeMast Consignee) 
{ 
    using(var scon=new SqlConnection(strConnection)) 
    { 
    using(var cmd=new SqlCommand()) 
    { 
     cmd.CommandText = "AddInConsigneeTable"; 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Connection = scon; 

     cmd.Parameters.AddWithValue("@Code",Consignee.Code); 
     cmd.Parameters.AddWithValue("@Name",Consignee.Name); 
     cmd.Parameters.AddWithValue("@Address1",Consignee.Address1); 
     cmd.Parameters.AddWithValue("@Address2",Consignee.Address2); 
     cmd.Parameters.AddWithValue("@Address3",Consignee.Address3); 
     cmd.Parameters.AddWithValue("@City",Consignee.City); 
     cmd.Parameters.AddWithValue("@PinCode",Consignee.Pincode); 
     cmd.Parameters.AddWithValue("@Country",Consignee.Country); 
     cmd.Parameters.AddWithValue("@TelNo1",Consignee.TelNo1); 
     cmd.Parameters.AddWithValue("@TelNo2",Consignee.TelNo2); 
     cmd.Parameters.AddWithValue("@TelNo3",Consignee.TelNo3); 
     cmd.Parameters.AddWithValue("@EmailID",Consignee.EmailID); 
     cmd.Parameters.AddWithValue("@ContactPerson",Consignee.ContactPerson); 
     cmd.Parameters.AddWithValue("@Remark",Consignee.Remark); 

     scon.Open(); 
     cmd.ExecuteNonQuery(); 
    } 
    } 
} 

ExecuteNonQueryInsertDataメソッドを呼び出さずに成功を受け、誤ったメッセージを表示するには、AJAX呼び出しを引き起こす正常に実行します。

関連する問題