using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Dynamic; namespace ConsoleApplication1 {
public class QuickDB {
static void Main() {
var sql = "select * from Categories";
var connectionString = @"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Northwind;";
var list = new QuickDB(connectionString).ExecuteReader(sql);
for (int i = ; i < list.Length; i++) {
var item = list[i];
Console.WriteLine(item.CategoryName);
}
Console.ReadLine();
} private string connectionString;
public QuickDB(string connectionString) {
this.connectionString = connectionString;
} private void command(string sql, Action<SqlCommand> act) {
var c = new SqlConnection(connectionString);
c.Open();
var comm = c.CreateCommand();
comm.CommandText = sql;
act(comm);
c.Close();
} private T command<T>(string sql, Func<SqlCommand, T> func) {
T t = default(T);
command(sql, c => { t = func(c); });
return t;
} public int ExecuteNonQuery(string sql) {
return command(sql, c => {
return c.ExecuteNonQuery();
});
} public object ExecuteScalar(string sql) {
var r = ExecuteReader(sql);
return r.Length == ? null : r[][];
} public dynamic[] ExecuteReader(string sql) {
return command(sql, c => {
var q = c.ExecuteReader();
var r = new List<dynamic>();//will return this.
var ns = new List<string>();//column names
while (q.Read()) {
if (ns.Count == ) {
for (int i = ; i < q.FieldCount; i++) {
ns.Add(q.GetName(i));
}
ns.Sort();
}
IDictionary<string, object> obj = new ExpandoObject();//same to javascript object
foreach (var n in ns) {
obj.Add(n, q[n]);
}
r.Add(obj);
}
q.Close();
return r.ToArray();
});
}
}
}

超简DbHelper的更多相关文章

  1. Virtex6 PCIe 超简版基础概念学习(二)

    Virtex6 PCIe 超简版基础概念学习(二) 分类:FPGAPCIe (2081)  (0)  举报  收藏 文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 ise14.7 ...

  2. 新入手服务器不会玩?抢占式实例服务器教程,从零搭建tomcat超简流程

    新入手服务器不会玩?抢占式实例服务器教程,从零搭建tomcat超简流程 相信很多新人入手Linux服务器后,一脸无奈,这黑框框究竟能干啥?忽觉巨亏血亏不是? 这里面门道可不是你想象中的那么点,简则服务 ...

  3. 【Spring源码解析】—— 简单工厂模式的BeanFactory的超简版实现

    一.什么是简单工厂模式 设计模式的核心是“分工”,通过分工将对象与职责划分的更细化,进而提升系统设计的可扩展性,使其更容易维护. 开闭原则:对扩展开放,对修改关闭:要增加一个新的处理逻辑,可以开一个新 ...

  4. 1.2V转3.3V芯片电路图,超简电路

    镍氢可充电电池1.2V转成3.3V的电路和电子产品很多,在实际适用中,即使是两节镍氢电池串联供电也是会有供电电压下降和不稳定的影响,这是因为电池电量减少,而导致电池的电压也是会随着降低. 一般情况下, ...

  5. Spring 环境与profile(一)——超简用例

    什么是profile,为什么需要profile? 在开发时,不同环境(开发.联调.预发.正式等)所需的配置不同导致,如果每改变一个环境就更改配置不但麻烦(修改代码.重新构建)而且容易出错.Spring ...

  6. 超简教程:Xgboost在Window上的安装(免编译)

    Xboost在windows安装需要自己编译,编译的过程比较麻烦,而且需要复杂的软件环境.为了免去编译,我这里把编译好的文件上传到网盘供大家下载安装.有了编译好的文件,xgboost的安装变得超级简单 ...

  7. Oracle字符串分割Split(超简单一条sql解决)

    ) FROM renyuan where name ='张三' 解决如下问题 我现在有一个字段是存:,,3的,而它对应另一张值集表中.eg; 课程人员表 renyuan id name Course ...

  8. weblogic11g(10.3.6)部署war包时,解决jar包冲突的超简方案

    亲测有效:weblogic11g(10.3.6) + jdk7,打包使用jdk7或jdk8,注意weblogic用的jdk和打包时jdk的兼容. 分别配置web项目下pom.xml和weblogic. ...

  9. Virtex6 PCIe 超简版基础概念学习(一)

    文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 ise14.7 DBF板 Day2/PCIETest1 2016.03.31 lutianfei none 参考资料: Sparta ...

随机推荐

  1. html5css练习 旋转

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  2. hdu 2838 Cow Sorting

    题意: 给出一个数组,要求把他们排成升序,两个数字交换的代价是x + y,求代价的总和. 思路: 简单的逆序对变形,树状数组维护小于的cnt和sum即可. 代码: #include <stdio ...

  3. 单片机C语言基础编程源码六则

    1.某单片机系统的P2口接一数模转换器DAC0832输出模拟量,现在要求从DAC0832输出连续的三角波,实现的方法是从P2口连续输出按照三角波变化的数值,从0开始逐渐增大,到某一最大值后逐渐减小,直 ...

  4. python zip()函数

    描述 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表. 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符 ...

  5. docker运行镜像报错:"write init-p: broken pipe"

    docker: Error response from daemon: OCI runtime create failed: container_linux.go:344: starting cont ...

  6. ss命令详解

    ss是Socket Statistics的缩写.顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容.ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息 ...

  7. 在 Azure 上部署 Kubernetes 集群

    在实验.演示的时候,或者是生产过程中,我经常会需要运行一些 Docker 负载.虽然这在本地计算机上十分容易,但是当你要在云端运行的时候就有点困难了.相比于本地运行,在云端运行真的太复杂了.我尝试了几 ...

  8. IP通信基础的第一个星期

    IP通信基础不仅是很多专业课程的基础,同时学好它,在以后很多工作上都可以运用到,有网络工程师.通信工程师等等,当然,有些证书也会涉及到IP通信基础,有网络中级高级 CCNA等等. 那么,学好IP通信基 ...

  9. fastjson的简单使用

    实习初期,开始接触到系统的后台日志查询展示到前台,后台将查询到的数据转化成json格式返回前台,发现系统使用的是阿里的fastjson,于是想来了解一下fastjson的使用. 以下使用都是基于这个版 ...

  10. 从头推导与实现 BP 网络

    从头推导与实现 BP 网络 回归模型 目标 学习 \(y = 2x\) 模型 单隐层.单节点的 BP 神经网络 策略 Mean Square Error 均方误差 \[ MSE = \frac{1}{ ...