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. win7插着网线开机卡死,拔下网线开机正常

    公司的部分win7电脑插着网线开机,进到桌面后网络图标转圈圈卡住.控制面板,启动项,任务管理器等都打不开.把网线拔下后再开机,电脑正常进入系统,后再插上网线就能正常上网了.被这个问题困扰了很久,百度也 ...

  2. Qt3D Shader

    --------------------------------------------------- Qt3D ShaderPrograme Qt3D GLSL 渲染器 Shader示例可参考: h ...

  3. 20175205 2018-2019-2 《Java程序设计》第五周学习总结

    20175205 2018-2019-2 <Java程序设计>第五周学习总结 教材学习内容总结 接口:使用关键字interface定义接口 接口声明:interface 接口名 接口体:接 ...

  4. 复制ASP.NET的ASHX、aspx文件的注意事项

    在复制ashx文件后,需要在夫指出的文件上右键——打开方式——点击“”源代码文本编辑器“”  ashx在你新建的时候它已经指定了执行的命名空间你后面再去修改文件名或者里边的类名它的指定也不会变 这是因 ...

  5. 2018-2019-2 网络对抗技术 20165316 Exp4 恶意代码分析

    2018-2019-2 网络对抗技术 20165316 Exp4 恶意代码分析 一.原理与实践说明 1.实践目标 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析Exp2 ...

  6. 使用PowerDesigner 15进行逆向工程生成数据库图表时,列的注释问题

    上一章讲了对数据库进行逆向工程生成图表操作,可能会遇到无法生成注释的问题: 一.解决PowerDesigner逆向工程没有列注释 1.打开PowerDesigner 15,选择菜单:File→Reve ...

  7. go语言开发教程之web项目开发实战

    Golang介绍Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性.谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件 ...

  8. -bash: belts.awk: command not found

    执行awk命令时,没有问题.可是执行awk脚本时,出现这个问题:-bash: belts.awk: command not found. 既然之前直接执行awk命令没有问题,说明awk已经装了,本身是 ...

  9. 第十二节 JS事件高级应用

    事件绑定: IE方式:(仅适用于IE9及以下,其他的比如FF.Chrome.IE11都不适用) attachEvent(事件名称, 函数):绑定事件处理函数 detachEvent(事件名称, 函数) ...

  10. Monkey之常用ADB命令(新猿旺学习总结)

    查看 adb 版本                                     adb version获取连接设备及状态                           adb dev ...