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



我不知道我的标题是否可以理解,但实际上我想知道哪个更好?

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

2-使用 json 格式从 sql 数据库获取数据

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(对于 JSON 路径(

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 :我在脑海中写了代码。对不起,错误的代码和糟糕的英语。

请指导我。谢谢。

为了清楚起见,您是否正在阅读完整的表格?

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

计算依赖于行数的命令数。有点像我们做大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 连接将保持打开状态,因此如果您想在循环后或在循环中执行此操作,它会调用它的判断。 还有哒哒。填充或使用上述内容在内部是相同的,仍然会遍历所有行。 就使用 json 而言,除非您询问存储为 Json 文件是否比在 sql 中更好,否则我不会这样做。这是一个完全不同的问题。

一旦数据进入列表,就可以使用 PLINQ 并行处理数据,即使对于上述反序列化,您也可以尝试 PLINQ。

最新更新