SQL VS前端处理
本文关键字:处理 前端 VS SQL | 更新日期: 2024-10-24 12:50:09
最近我在做一个使用JSON的项目,我有两种方法从数据库中获取数据,以方便我使用JSON字符串编写JavaScript
第一个
是在数据库中进行处理以形成Json字符串,就像这个
select
ID,
'{ "Comments": ['+
Substring(
(SELECT
',{ '+
'"Comment" : "' + REPLACE(Comments,'"',''"') + '",'+
'"Name" : "' + REPLACE(Name,'"',''"') +
'}'
FROM JsonTbl
where JsonTbl.ID = tbl.ID
for xml path('')
),2,250000)
+'] }' as JsonData
from tbl
第二次
是在没有任何处理的情况下从数据库中选择数据,并在前端进行创建Json字符串的处理,就像这个
DataTable data = GetDataFromDatabase();
StringBuilder sb = new StringBuilder();
sb.Append("{ '"Comments'": [");
for (int i = 0; i < data.Rows.Count; i++)
{
sb.Append("{");
sb.Append("'"Comment'" : '"" + data.Rows[i]["Comment"].ToString().Replace('"', ''"') + "'",");
sb.Append("'"Name'" : '"" + data.Rows[i]["Comment"].ToString().Replace('"', ''"') + "'"");
sb.Append("},");
}
sb.Remove(sb.Length - 1, 1);
我想知道从性能和维护的角度来看,哪一个会更好。
注意:请注意,我已经修剪了代码以在这里发布原始代码。原始代码比这个大得多,并且我使用的是MSSQL 2008和.Net(C#)
更好的方法是通过SQL Server获取数据,在C#中基于该数据创建一个对象,并使用JSON序列化程序进行JSON。可能是JSON.Net。使用当前方法维护代码可能会遇到问题。
从SQL服务器获取"正常"数据,并使用像JSON.net这样的稳定库将其序列化为JSON。
两者都不好。
数据库没有责任为您提供数据的外部格式。所以第一个是否定的
在第二部分中,您将使用字符串串联来构建JSON。这很脆弱。
一个好的方法是将数据加载到对象中,然后使用JSON库将它们序列化为JSON。
DataTable dtable = GetDataFromDatabase();
var data = from row in dtable
select new { Comment = row["Comment"],
Name = row["Name"] };
JavaScriptSerializer serializer = new JavaScriptSerializer();
String json = serializer.Serialize(data);