首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL前端处理

SQL前端处理
EN

Stack Overflow用户
提问于 2012-08-04 13:35:31
回答 3查看 218关注 0票数 1

最近,我正在从事一个使用JSON的项目,我有两种方法从数据库中获取数据,以方便使用Json字符串的JavaScript,

First

是在数据库中进行处理,以形成Json字符串,如下所示

代码语言:javascript
复制
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字符串的处理,如下所示

代码语言:javascript
复制
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#)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-04 13:39:00

更好的方法是通过Server获取数据,在C#中基于这些数据创建一个对象,并为JSON使用JSON序列化器。可能是JSON.Net。使用当前的方法维护代码可能会遇到问题。

票数 2
EN

Stack Overflow用户

发布于 2012-08-04 13:40:22

从您的server获取“正常”数据,并使用像JSON.net这样的稳定库将其序列化为json。

票数 1
EN

Stack Overflow用户

发布于 2012-08-04 13:43:20

两者都很糟糕。

数据库没有责任为您提供数据的外部格式。所以第一个是否定的。

在第二步,您将使用字符串连接来构建您的JSON。那是脆弱的。

一种很好的方法是将数据加载到对象中,然后使用JSON库将它们序列化为JSON。

代码语言:javascript
复制
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);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11809073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档