使用 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 数组中,现在我想在不使用循环的情况下将它们保存在数据库中。
接下来你想做的事情我会下台
因为你已经有了 JSON 你可以在
需要页面的 asxp.cs。(我将其命名为 AddJSON())
此方法应接受 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; }
}
然后你必须为 this.I 创建你的 table 假设你使用的是 MSSQL,你将能够相应地创建你的 table 结构。(连接字符串等)
当第 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 从中得到灵感。
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 数组中,现在我想在不使用循环的情况下将它们保存在数据库中。
接下来你想做的事情我会下台
因为你已经有了 JSON 你可以在 需要页面的 asxp.cs。(我将其命名为 AddJSON())
此方法应接受 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; } }
然后你必须为 this.I 创建你的 table 假设你使用的是 MSSQL,你将能够相应地创建你的 table 结构。(连接字符串等)
当第 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 从中得到灵感。