asp.net用sql数据库生成json字符串并显示出来
use Shop
create table DictBase(Id int identity(1,1) primary key,Name nchar(10))
insert into DictBase
select '包装'
UNION ALL
select '价格'
UNION ALL
select '品牌'
工厂方法模式
IDAL层(添加一个IDictBase接口,在里面定义一个方法)
using System;
using System.Collections.Generic;
using System.Data;
namespace Letao.IDAL
{
/// <summary>
/// 接口:类别字典键
/// </summary>
public interface IDictBase
{
#region 获取
/// <summary>
/// 获取所有字典键名
/// </summary>
List<Model.DictBase> Get();
#endregion
}
}
接口:类别字典名称
DALFactory层(DataAccess新建接口实现工厂模式CreateDictBase)
using System;
using System.Reflection;
using System.Configuration;
using Letao.IDAL;
namespace Letao.DALFactory
{
/// <summary>
/// 工厂反射层
/// </summary>
public sealed class DataAccess
{
private static readonly string AssemblyPath = ConfigurationManager.AppSettings["SQLServerDAL"];
/// <summary>
/// 类别字典键名
/// </summary>
public static Letao.IDAL.IDictBase CreateDictBase()
{ string ClassNamespace = AssemblyPath + ".DictBase";
return (IDictBase)Assembly.Load(AssemblyPath).CreateInstance(ClassNamespace);
}
}
}
工厂接口:类别字典名称
SQLServerDAL层(在项目中添加类DictBase,继承自接口IDictBase,实现的方法是向控制台输出所有字典键名)
using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic; namespace Letao.SQLServerDAL
{
/// <summary>
/// 类别字典键
/// </summary>
class DictBase:IDAL.IDictBase
{
#region 获取
/// <summary>
/// 获取所有字典键名
/// </summary>
public List<Model.DictBase> Get()
{
string sql = string.Format("select * from DictBase");
List<Model.DictBase> list = new List<Model.DictBase>();
using(SqlDataReader dr=DBUtility.DbHelperSQL.ExecuteReader(ConnString.connReadonly,CommandType.Text,sql,null))
{
while(dr.Read())
{
Model.DictBase model = new Model.DictBase();
object obj;
obj = dr["Id"];
if(obj!=null &&obj!=DBNull.Value)
{
model .Id =(int )obj;
}
model.Name = dr["Name"].ToString();
list.Add(model );
}
}
return list;
}
}
}
BLL层(创建一个DictBase的工厂类,使它继承自CreateDictBase接口,创建一个方法,使它的返回值为IDictBase,最后在方法的实现里面返回实例化的DictBase)
using System;
using System.Collections.Generic;
namespace Letao.BLL
{
/// <summary>
/// 类别字典键
/// </summary>
public class DictBase
{
protected static Letao.IDAL.IDictBase dal =Letao .DALFactory .DataAccess.CreateDictBase();
/// <summary>
/// 获取所有字典键名
/// </summary>
public static List<Model.DictBase> Get()
{
return dal.Get();
}
}
}
具体工厂类
Model层(DictBase类)
using System;
namespace Letao.Model
{
/// <summary>
/// 类别字典键
/// </summary>
public class DictBase
{
/// <summary>
/// 字典健名编号
/// </summary>
public int Id { get; set; }
/// <summary>
/// 字典关键字
/// </summary>
public string Name{ get; set; }
}
}
具体类别字典键名类
备注:
DBUtility层(DbHelperSQL类、ConnString类)
using System;
using System.Data;
using System.Data.SqlClient;
namespace Letao.DBUtility
{
public class DbHelperSQL
{
/// <summary>
/// 返回数据内容(SqlDataReader)
/// </summary>
/// <param name="connectionString">数据库连接字符串</param>
/// <param name="cmdType">执行类型(过程/语句)</param>
/// <param name="cmdText">执行的过程名称/查询语句</param>
/// <param name="commandParameters">command执行的SqlParameter[]数组</param>
/// <returns>SqlDataReader 返回执行后的数据内容</returns>
public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
SqlConnection conn = new SqlConnection(connectionString);
try
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return rdr;
}
catch
{
//Close(conn);
//Dispose(conn);
throw;
}
}
}
}
返回数据内容(SqlDataReader)
using System;
namespace Letao.SQLServerDAL
{
/// <summary>
/// 数据库连接字符串
/// </summary>
class ConnString
{
/// <summary>
/// 读写数据库连接字符串
/// </summary>
public static string conn
{
get
{
if (_conn == null)
{
_conn = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionStringWrite"].ToString();
}
return _conn;
}
}
private static string _conn = null;
/// <summary>
/// 只读数据库连接字符串
/// </summary>
public static string connReadonly
{
get
{
if (_connReadonly == null)
{
_connReadonly = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionStringReadonly"].ToString();
}
return _connReadonly;
}
}
private static string _connReadonly = null;
}
}
只读数据库连接字符串
接下来添加App.config文件,来实现系统所选择的数据库是什么数据库
<?xml version="1.0"?> <appSettings>
<add key="title" value="乐淘"/>
<add key="SQLServerDAL" value ="Letao.SQLServerDAL"/>
</appSettings>
App.config文件
页面
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="/Admin/Scripts/jquery-1.8.3.min.js" type="text/javascript"></script>
</head>
<body>
<div>
<ul id="dictbase"></ul>
</div>
<script type="text/javascript">
$(function () {
$.getJSON('test.aspx?action=get', function (json) {
var _html = [];
for (var key in json) {
_html.push('<li data="' + json[key].Id + '">' + json[key].Name + '</li>');
}
$("#dictbase").empty().append(_html.join(''));
});
})
</script>
</body>
</html>
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Headers["X-Requested-With"] != null && Request.Headers["X-Requested-With"].ToLower() == "XMLHttpRequest".ToLower())
{
Response.Clear();
Response.ContentType = "application/json";
if (Request["action"] == "get")
Response.Write(GetJson());
Response.End();
}
}
protected string GetJson()
{
System.Web.Script.Serialization.JavaScriptSerializer json = new System.Web.Script.Serialization.JavaScriptSerializer();
List<Letao.Model.DictBase> list = new List<Letao.Model.DictBase>();
list = Letao.BLL.DictBase.Get();
return json.Serialize(list);
}
效果

知识点:
1、从数据库转换成json字符串

2、X-Requested-With是否是第一次加载
谷歌浏览器审查元素后的结果

参考网址:1、ASP.NET用SQL Server中的数据来生成JSON字符串
http://www.cnblogs.com/jacksonwj/archive/2008/08/10/1264525.html
2、asp.net 简单工厂模式和工厂方法模式之论述
http://www.jb51.net/article/29212.htm
asp.net用sql数据库生成json字符串并显示出来的更多相关文章
- 识别Json字符串并分隔成Map集合
识别Json字符串并分隔成Map集合 前言: 最近又看了点Java的知识,于是想着把CYQ.Data V5迁移到Java版本. 过程发现坑很多,理论上看大部分很相似,实践上代码写起来发现大部分都要重新 ...
- Asp.Net MVC 从数据库生成代码(包括页面)
项目需要,数据库已经设计完成,需要生成相关的数据访问代码和页面. 参考:http://www.tracefact.net/asp-net/aspnetmvc-model-part1.aspx http ...
- 在SQL 中生成JSON数据
这段时间接手一个数据操作记录的功能,刚拿到手上的时候打算用EF做,后来经过仔细考虑最后还是觉定放弃,最后思考再三决定: 1.以模块为单位分表.列固定(其实可以所有的操作记录都放到同一个表,但是考虑到数 ...
- 批量生成随机字符串并保存到excel
需要导入jxl.jar,commons-lang-2.6.jar 链接:https://pan.baidu.com/s/1NPPh24XWxkka68x2JQYlYA 提取码:jvj3 链接:http ...
- SQL随机生成数值字符
1.随机生成0~N之间的数值 ROUND(RAND()*N,0) 2.随机生成Min~Max之间的数值 ROUND(RAND()*(Max-Min),0)+Min 3.随机生成大写字母 CHAR(RO ...
- Java版本:识别Json字符串并分隔成Map集合
前言: 最近又看了点Java的知识,于是想着把CYQ.Data V5迁移到Java版本. 过程发现坑很多,理论上看大部分很相似,实践上代码写起来发现大部分都要重新思考方案. 遇到的C#转Java的一些 ...
- java对象转化为json字符串并传到前台
package cc.util; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import ...
- Android获取服务器Json字符串并显示在ListView上面
已经好久没有更新博客,今天终于有新的东西可以记录了. 通过这次的任务学习到了以前没有注意到的知识点,真的有种书读百遍,其义自见的感觉.这次又重新认识了<Handler消息机制原理>.这次的 ...
- 菜鸟学习Spring——SpringMVC注解版在服务器端获取Json字符串并解析
一.概述. SpringMVC在服务端把客户端传过来的JSON字符串,并把JSON字符串转成 JSON对象并取得其中的属性值,这个在项目中经常用到. 二.代码演示. 需要添加的jar包. 2.1 we ...
随机推荐
- [转帖]详解oracle数据库唯一主键SYS_GUID()
详解oracle数据库唯一主键SYS_GUID() https://www.toutiao.com/i6728736163407856139/ 其实 需要注意 这里满不能截取 因为截取了 就不一定唯一 ...
- Python豆瓣源镜像
pip install pymysql -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
- Java基础---Java方法
基本方法的定义: public static void 方法名称() { 方法体 } 方法名称的命名规则和变量一样,使用小驼峰. 方法体:也就是大括号当中可以包含任意条语句. 注意事项: 1. 方法定 ...
- Python_OpenCV视频截取并保存
在图像处理之前,我们需要对拿到手的数据进行筛选,对于视频,我们需要从中截取我们需要的一段或几段 整体思路比较简单,通过设定截取视频的起止时间(帧数),可以将该时间段内的图像保存为新的视频 直接上代码: ...
- 加密算法 MD5 和 SHA 的 JAVA 实现
首先先简单的介绍一下MD5 和 SHA 算法 然后看一下在 java.security.MessageDigest (信息摘要包下) 如何分别实现 md5 加密 和 sha 加密 最后在看一下 ...
- 数据结构-平衡二叉树Java实现
1,Node.java package com.cnblogs.mufasa.BalanceBinaryTree; public class Node { Node parent; Node left ...
- pickle 和 base64 模块的使用
pickle pickle模块是python的标准模块,提供了对于python数据的序列化操作,可以将数据转换为bytes类型,其序列化速度比json模块要高. pickle.dumps() 将pyt ...
- [转载]Linux 命令详解:./configure、make、make install 命令
[转载]Linux 命令详解:./configure.make.make install 命令 来源:https://www.cnblogs.com/tinywan/p/7230039.html 这些 ...
- js中undefined的几种情况
1.变量声明且没有赋值: 2.获取对象中不存在的属性时: 3.函数需要实参,但是调用时没有传值,形参是undefined: 4.函数调用没有返回值或者return后没有数据,接收函数返回的变量是und ...
- Java 之 Collections 工具类
一.Collections 概述 java.utils.Collections 是集合工具类,用来对集合进行操作. 二.常用方法 public static <T> boolean add ...