使用 Ajax Web 方法将 Json 对象插入 SQL Server 2008

Insert Json Object into SQL Server 2008 using Ajax Webmethod

function AddJSon() {
    var jsonArr = [];
    for (var i = 1; i < 4; i++) {
        for (var j = 0; j < 3; j++) {
            var ProductId = $("#hfProductId" + i + "_" + j).val();
            if (ProductId != undefined) {
                jsonArr.push({
                    SalesOrderItemId: $("#hfProductId" + i + "_" + j).val(),
                    AttachmentCode: $("#txtAttachmentCode" + i + "_" + j).val(),
                    AttachmentName: $("#txtAttachName" + i + "_" + j).val(),
                    Qty: $("#txtAttachmentQty" + i + "_" + j).val(),
                    UnitCost: $("#txtAttachCost" + i + "_" + j).val(),
                    TotalCost: $("#txtAttachmentTotalCost" + i + "_" + j).val(),
                })
            }
        }
    }
}

在上面的代码中,我已经将各个字段的值推送到 Json 数组中,现在我想在不使用循环的情况下将它们保存在数据库中。

接下来你想做的事情我会下台

  1. 因为你已经有了 JSON 你可以在 需要页面的 asxp.cs。(我将其命名为 AddJSON())

  2. 此方法应接受 JSON 格式的参数类型,我们已经 have.So 为此创建了一个 class。(我将其命名为 JsonDataList) 您的请求对象应该如下所示。

    public class JsonDataList
    {
        public List<JsonData> jsonData { get; set; }
    }
    
    public class JsonData
    {
        public int SalesOrderItemId { get; set; }
        public string AttachmentCode { get; set; }
        public string AttachmentName { get; set; }
        public int Qty { get; set; }
        public decimal UnitCost { get; set; }
        public decimal TotalCost { get; set; }
    
    }
    
  3. 然后你必须为 this.I 创建你的 table 假设你使用的是 MSSQL,你将能够相应地创建你的 table 结构。(连接字符串等)

  4. 当第 3 部分完成时,您的网络方法应该像下面这样更改以将数据插入到创建的 table。(我将在网络方法本身中这样做,这并不好)

    [WebMethod]
    public static string AddJSon(JsonDataList jsonDataList)
    {
        try
        {
            using(SqlConnection con=new SqlConnection("your_connection_String"))
            {
                con.Open();
                foreach(JsonData data in jsonDataList)
                {
                    string query  = "INSERT into table (column1,column2,column3,...) VALUES (@value1,@value2,@value3,..)";
                    SqlCommand command = new SqlCommand(query, con);
                    command.Parameters.Add("@value1",data.SalesOrderItemId);
                    command.Parameters.Add("@value2",data.AttachmentCode );
                    command.Parameters.Add("@value3",data.AttachmentName );
                    .
                    .
                    command.ExecuteNonQuery();
                }     
            }
            return "Success";
        }catch(Exception e)
        {
            return "Error";
        }
    }
    

希望这可能对 you.This 没有任何验证或任何好处 practices.Just 从中得到灵感。