如何将json数据存储到mysql中

pes8fvy9  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(410)

我在restapi上有这个json数据,我想把它存储在mysql服务器上
json数据

[
    {
        "res_order_num": "1",
        "menu_code": "1",
        "menu_quantity": "2",
        "menu_total_price": "60",
        "res_no": "1",
        "menu_name": "Adobo Manok"
    },
    {
        "res_order_num": "2",
        "menu_code": "5",
        "menu_quantity": "2",
        "menu_total_price": "90",
        "res_no": "1",
        "menu_name": "Pritong Bangus"
    }
]

那么我该如何在mysql中存储它呢。

vdzxcuhz

vdzxcuhz1#

无附加信息;你似乎没有太多的现有代码。如果您正试图开始将数据保存到c#中的mysql数据库;microsoft提供了此教程。然而,没有额外的信息,人们无法回答这个问题。
辅导的:https://msdn.microsoft.com/en-us/library/0f92s97z.aspx
如果包括以下内容,人们可能会给出更好的答案:
您是否有读取或写入mysql的现有代码?
你有mysql数据库吗?
您的数据库是否有与json中表示的数据相匹配的表?

myzjeezk

myzjeezk2#

解决方案如下:

var persons = JsonConvert.DeserializeObject<List<Member>>(response);

现在您可以循环浏览以下项目。

foreach(Member person in persons )
{
    // add to db your each person
}

对于ado.net,如何插入db:https://msdn.microsoft.com/en-us/library/ms233812.aspx
对于entityframework:https://msdn.microsoft.com/en-us/library/ee712907(v=vs.113).aspx

vsdwdz23

vsdwdz233#

如果您的json包含0…..n人,那么 BatchUpdate 对您来说是一个很好的解决方案如果您有性能要求的话,这可能会减少数据库的往返
以下方法包含 BatchUpdate ```
public void BatchUpdateToMySqlServer()
{
var persons = JsonConvert.DeserializeObject<List>(response);

DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("res_order_num", typeof(System.String)));
dt.Columns.Add(new DataColumn("menu_code", typeof(System.String)));
dt.Columns.Add(new DataColumn("menu_quantity", typeof(System.String)));
dt.Columns.Add(new DataColumn("menu_total_price", typeof(System.String)));
dt.Columns.Add(new DataColumn("res_no", typeof(System.String)));
dt.Columns.Add(new DataColumn("menu_name", typeof(System.String)));

foreach (var item in persons)
{
    DataRow dr = dt.NewRow();
    dr["res_order_num"] = item.res_order_num;
    dr["menu_code"] = item.menu_code;
    dr["menu_quantity"] = item.menu_quantity;
    dr["menu_total_price"] = item.menu_total_price;
    dr["res_no"] = item.res_no;
    dr["menu_name"] = item.menu_name;
    dt.Rows.Add(dr);
}

MySqlConnection con = new MySqlConnection("Your Connection String");
if (con.State == ConnectionState.Open)
{
    con.Close();
}
con.Open();
MySqlCommand cmd = new MySqlCommand("Your Insert Command", con);
cmd.CommandType = CommandType.Text;

cmd.UpdatedRowSource = UpdateRowSource.None;

MySqlDataAdapter da = new MySqlDataAdapter();
da.InsertCommand = cmd;
da.UpdateBatchSize = 100000; //If you json contains 100000 persons object;
int records = da.Update(dt);
con.Close();

}

如果你一定要用的话,这是一篇好文章 `StoedProcedure` 作为insert命令。

相关问题