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 ...
随机推荐
- MySQL的sql语言分类DML、DQL、DDL、DCL
SQL语言一共分为4大类:数据定义语言DDL,数据操纵语言DML,数据查询语言DQL,数据控制语言DCL 1.数据定义语言DDL(Data Definition Language) 对象: 数据库和表 ...
- Go语言学习笔记(7)——函数和方法
Go语言中同时有函数和方法! 函数: go程序必须要包含一个main函数.main函数不能有任何参数和返回值! 1. 定义方法示例: func max(num1, num2 int) int { // ...
- nginx 设置开机启动
设置nginx开机启动chkconfig --add /etc/init.d/nginx chkconfig nginx on
- Scratch 母鸡保护鸡蛋
今天我们一起实现一个“母鸡保护鸡蛋”的小游戏 具体思路是这样滴: 1.鸡蛋会不断的从右往左移动: 2.当母鸡快碰到鸡蛋的时候,按下“空格键”让母鸡跳跃起来: 3.如果母鸡落下没碰到鸡蛋,加一分: 4. ...
- 19-MySQL DBA笔记-操作系统、硬件、网络的优化
第19章 操作系统.硬件.网络的优化 本章将介绍操作系统和硬件的性能优化,对于硬件,我们主要讲述CPU.内存.磁盘阵列及固态硬盘.任何优化,首先都需要有足够的数据支持,对于操作系统下性能数据的收集,这 ...
- 15-MySQL DBA笔记-运维管理
第15章 运维管理 随着各种技术的快速发展,现今的DBA可以比以前的DBA维护多得多的数据库实例.DBA已经越来越像一个资源的管理者,而不是简单的操作步骤执行人.本章将为读者介绍规模化运维之道.首先, ...
- 调用顺丰API实现电商专递下单和获取面单功能
参考文章:https://www.cnblogs.com/zhangxiaoyong/p/8317229.html 顺丰需求文档: 链接:https://pan.baidu.com/s/16EEaph ...
- core项目打包时发现有的项目的xml文件不会被打包进去,怎么办?
我打包后发现打包后的文件夹内,不存在xml文件,所以swagger加载失败:然后经过测试发现Core项目打包的时候是默认不包含Xml文件的,VS里面也没有办法设置. 解决方法:手动修改项目文件,找到你 ...
- day12-python之深灰魔法
#######################################灰魔法: list类中提供的方法 列表####################################### ...
- python matplotlib动态绘图
matplotlib animation的官方文档: http://matplotlib.org/api/animation_api.html 接下来完成一个实时获取cpu数值,并绘图的功能. 1.动 ...