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. html5 css折叠导航栏

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

  2. Tableau 学习资料

    官方文档: https://www.tableau.com/zh-cn/support/help 其他教程: tablaue破解版_tableau10 破解_tableau server 破解:htt ...

  3. ceph运维常用指令

    一.集群 1.启动一个ceph 进程 启动mon进程 service ceph start  mon.node1 启动msd进程 service ceph start mds.node1 启动osd进 ...

  4. Redis学习-主从复制、哨兵

    主从复制 官方文档:https://redis.io/topics/replication Redis中的主从复制,也就是Master-Slave模型,有以下特点 Master可以拥有多个slave ...

  5. MyBatis笔记(二) 最简单的insert命令

    接上一篇随笔.这里没有用到MyBatis最关键的映射器接口,因此只做个简单的insert操作,update和delete同理,就不再赘述了. 直接上代码: 首先是dao包下的UserDAO.java文 ...

  6. bloc控制读写文件

    import 'package:flutter/material.dart'; import 'dart:io'; import 'package:path_provider/path_provide ...

  7. xlrd & xlwd

    一.安装xlrd http://pypi.python.org/pypi/xlrd 二.使用介绍 1.导入模块 import xlrd 2.打开Excel文件读取数据 data = xlrd.open ...

  8. Linux启动过程简述

    Linux启动过程: 图片来自:https://www.cnblogs.com/codecc/p/boot.html 简单来讲: 加载BIOS–>读取MBR–>Boot Loader–&g ...

  9. iOS SDWebImage知识点

    1.clear 和 clean clear 先把之前的缓存文件夹删除掉,然后新建一个文件夹 clean 先删除过期的文件,然后计算剩余缓存文件的大小 currentSize > maxSize, ...

  10. 【新特性】JDK1.8

    一.简介 毫无疑问,Java 8是Java自Java 5(发布于2004年)之后的最重要的版本.这个版本包含语言.编译器.库.工具和JVM等方面的十多个新特性.在本文中我们将学习这些新特性,并用实际的 ...