从关系数据库获取json数据的更好方法?

问题描述 投票:-1回答:2

我不知道我的头衔是可以理解的,但实际上我想知道哪一个更好?

1 - 创建对象类并使用循环从mssql db获取数据

2 - 从jql格式的sql db获取数据

3 - 别的..

我认为,使用大数据时循环可能会很慢。但是,使用json路径可能比循环慢。

示例1(在循环中创建对象)

List<objExample > retVal = new List<objExample >();
objExample item;
SqlConnection con = new SqlConnection("CONNECTION STRING");
SqlDataAdapter da;
SqlCommandcmd;
da = new SqlDataAdapter("Select a,b from table", con);
con.Open();
DataTable dt = new DataTable();
da.Fill(dt);
con.Close();
foreach (DataRow itemdr in dt.Rows)
{
item = new objExample();
item.A= itemdr["a"].ToString();
item.B= itemdr["b"].ToString();
item.HasError = false;
retVal.Add(item);
}
return retVal;

2的示例(FOR JSON PATH)

List<objExample > retVal;
SqlConnection con = new SqlConnection("CONNECTION STRING");
SqlDataAdapter da;
SqlCommandcmd;
da = new SqlDataAdapter("Select a,b from table for json path", con);
con.Open();
DataTable dt = new DataTable();
da.Fill(dt);
con.Close();
string _json = dt.Rows[0][0].ToString();
retVal = JsonConvert.DeserializeObject<List<objExample>>(_json);
return retVal;

我尝试了两个小数据,但它并不能让我满意。

PS:我在脑海里写了代码。抱歉错误的代码和糟糕的英语。

请指导我。谢谢。

c# json sql-server wcf serialization
2个回答
0
投票

为了清楚起见,你在读完整的桌子吗?

如果目标是获取存储在json中的数据,并且可能对其执行一些查询,则NoSQL DB似乎比SQL更合适。


0
投票

计算依赖于行数的命令数。我们如何做大O复杂性。我会做的事情如下:

  using (var sqlCommand = new SqlCommand("Select a,b from table for json path", con))
{
   try
     {
       using (var reader = sqlCommand.ExecuteReader())
        {
           while (reader.Read())
           {
             item = new objExample();
             item.A= reader["a"].ToString();
             item.B= reader["b"].ToString();
             item.HasError = false;
             retVal.Add(item);

            }
           }

      }

}

请记住,在执行此操作时,sql连接将保持打开状态,以便在循环或循环后执行此操作时进行判断调用。 da.Fill或使用上面的内容是相同的,仍然会迭代所有行。至于使用json,我不会这样做,除非你问是否存储为Json文件是一个比sql更好的选择。这是一个完全不同的问题。

一旦将数据放入列表中,就可以使用PLINQ并行处理数据,即使是上面的反序列化,您也可以尝试使用PLINQ。

© www.soinside.com 2019 - 2024. All rights reserved.