using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using Microsoft.Win32; namespace SqlHelp
{
/// <summary>
/// 定义SqlParameter所需的参数对象
/// </summary>
public class Parameter
{
/// <summary>
/// 参数集合构造函数
/// </summary>
/// <param name="paramname">参数名称</param>
/// <param name="value">参数所对应的对象的值</param>
public Parameter(string paramname, object value)
{
this.ParamName = paramname;
this.Obj = value;
}
/// <summary>
/// 参数名称
/// </summary>
public string ParamName
{
get;
set;
}
/// <summary>
/// 参数名称所对应的对象的值
/// </summary>
public object Obj
{
get;
set;
}
}
/// <summary>
/// SqlHelper ^_^ !
/// </summary>
public class SqlHelper
{
/// <summary>
/// 连接字符串字段
/// </summary>
private static string connStr; /// <summary>
/// SQL连接字符串属性
/// </summary>
public static string ConnStr
{
get { return SqlHelper.connStr; }
set { SqlHelper.connStr = value; }
} private static SqlParameter[] GetSqlParameterToArr(List<Parameter> listP)
{
List<SqlParameter> list = new List<SqlParameter>();
foreach (var item in listP)
{
list.Add(new SqlParameter(item.ParamName, item.Obj));
}
return list.ToArray();
} /// <summary>
/// 执行TSQL 语句并返回受影响的行
/// </summary>
/// <param name="sql">需要执行的sql语句</param>
/// <returns></returns> public static int ExecuteNonQuery(string sql)
{
try
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
return cmd.ExecuteNonQuery();
}
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
} /// <summary>
/// 执行TSQL 语句并返回受影响的行
/// </summary>
/// <param name="sql">需要执行的sql语句</param>
/// <param name="paramList">参数的泛型集合</param>
/// <returns></returns>
public static int ExecuteNonQuery(string sql, List<Parameter> paramList)
{
try
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.Parameters.AddRange(GetSqlParameterToArr(paramList));
return cmd.ExecuteNonQuery();
}
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
} /// <summary>
/// 执行查询,并返回查询所返回的结果集中第一行的第一列
/// </summary>
/// <param name="sql">需要执行的sql语句</param>
/// <returns></returns> public static object ExecuteScalar(string sql)
{
try
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
return cmd.ExecuteScalar();
}
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
/// <summary>
/// 执行查询,并返回查询所返回的结果集中第一行的第一列
/// </summary>
/// <param name="sql">需要执行的sql语句</param>
/// <param name="paramList">参数的泛型集合</param>
/// <returns></returns>
public static object ExecuteScalar(string sql, List<Parameter> paramList)
{
try
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.Parameters.AddRange(GetSqlParameterToArr(paramList));
return cmd.ExecuteScalar();
}
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
} /// <summary>
/// 返回已经填充结果的DataSet
/// </summary>
/// <param name="sql">需要执行的sql语句</param>
/// <returns></returns> public static DataSet ExecuteDataSet(string sql)
{
try
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet dataset = new DataSet();
adapter.Fill(dataset);
return dataset;
}
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
} /// <summary>
/// 返回已经填充结果的DataSet
/// </summary>
/// <param name="sql">需要执行的sql语句</param>
/// <param name="paramList">参数的泛型集合</param>
/// <returns></returns>
public static DataSet ExecuteDataSet(string sql, List<Parameter> paramList)
{
try
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.Parameters.AddRange(GetSqlParameterToArr(paramList));
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet dataset = new DataSet();
adapter.Fill(dataset);
return dataset;
}
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
} /// <summary>
/// 返回查询结果集所返回的字段值的泛型集合
/// </summary>
/// <param name="sql">需要执行的sql语句</param>
/// <returns></returns> public static List<object> ExecuteReader(string sql)
{
List<object> obj = new List<object>();
try
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
for (int i = ; i < reader.FieldCount; i++)
{
obj.Add(reader.IsDBNull(i) ? "空值" : reader.GetValue(i));
}
}
return obj;
}
}
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
} /// <summary>
/// 返回查询结果集所返回的字段值的泛型集合
/// </summary>
/// <param name="sql">需要执行的sql语句</param>
/// <param name="paramList">参数的泛型集合</param>
/// <returns></returns>
public static List<object> ExecuteReader(string sql, List<Parameter> paramList)
{
List<object> obj = new List<object>();
try
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.Parameters.AddRange(GetSqlParameterToArr(paramList));
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
for (int i = ; i < reader.FieldCount; i++)
{
obj.Add(reader.IsDBNull(i) ? "空值" : reader.GetValue(i));
}
}
return obj;
}
}
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
} /// <summary>
/// 获取SqlServer数据库实例名数组
/// </summary>
/// <returns></returns>
public static string[] GetInstances()
{
RegistryKey reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server");
string[] instances = (string[])reg.GetValue("InstalledInstances", "");
try
{
if (instances.Length > )
{
for (int i = ; i < instances.Length; i++)
{
if (instances[i] == "MSSQLSERVER")
{
instances[i] = System.Environment.MachineName;
}
else
{
instances[i] = System.Environment.MachineName + @"\" + instances[i];
}
}
}
return instances;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
}
}

测试:
1、获取实例

窗体拖入ComboBox控件,设置name值为cbx_server

引入SqlHelper

using SqlHelp

窗体load事件加入:

cbx_server.Items .AddRange ( GetInstances());

2、执行带参数查询方法

窗体拖入按钮,name为Bt_Test,并且拖入TextBox控件,name值为txt_Param

引入SqlHelper

using SqlHelp

在按钮点击事件中加入:

         private void Bt_Test_Click(object sender, EventArgs e)
{
SqlHelper.ConnStr = @"Data Source=localhost;Initial Catalog=UFsystem;Integrated Security=True";
Parameter param = new Parameter("@id", txt_Param.Text);
List<Parameter> list = new List<Parameter>();
list.Add(param);
List<object> obj = SqlHelper.ExecuteReader(@"select * from ua_user where cuser_id=@id", list);
foreach (var item in obj)
{
Console.WriteLine(item);
}
}

输出:

admin
admin
空值
True
空值
空值
空值
空值

正在学习c#,有什么地方不对或不合适的请指教。

菜鸟学习Ado.net笔记一:Ado.net学习之SqlHelper类的更多相关文章

  1. tensorflow编程学习路线及笔记

    话不多说,直接上图! 关于人工智能算法学习思路,欢迎浏览我的另一篇随笔:如果你想开始学习算法,不妨先了解人工智能有哪些方向? 关于python编程学习路线及笔记,欢迎浏览我的另一篇随笔:python编 ...

  2. c#学习笔记04——ADO.NET

    ADO.NET结构:ADO.NET建立在几个核心类之上,这些类可以分为两组 包含和管理数据的类:DataSet DataTable DataRow DataRelation... 链接数据源的类:Co ...

  3. 菜鸟教程之学习Shell script笔记(上)

    菜鸟教程之学习Shell script笔记 以下内容是,学习菜鸟shell教程整理的笔记 菜鸟教程之shell教程:http://www.runoob.com/linux/linux-shell.ht ...

  4. ADO.Net笔记整理(一)

    几次装机,Notes已烟消云散,近日因为Node.js死活搞不定,无奈装机,备份好的东东,没想到磁盘扇区出现异常,可能是PE启动盘的病毒,只好将磁盘全部重新分区,恢复数据也懒得恢复了,日积月累关乎将来 ...

  5. ADO.NET复习——自己编写SqlHelper类

    今天复习了一次ADO.NET基础,整理一下自己的认为的重点: 编写SqlHelper类,方便我们执行数据库语句,这时可以直接调用封装在SqlHelper类的方法.现在大多数公司面试的时候,给你的面试题 ...

  6. JavaSE学习笔记(5)---内部类和String类

    JavaSE学习笔记(5)---内部类和String类 一.内部类基础 转自菜鸟教程 ​ 在 Java 中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来 ...

  7. 跟着鸟哥学Linux系列笔记3-第11章BASH学习

    跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 跟着鸟哥学Linux系列笔记1 跟着鸟哥学Linux系列笔记2-第10章VIM学习 认识与学习bash 1. ...

  8. MXNet设计笔记之:深度学习的编程模式比较

    市面上流行着各式各样的深度学习库,它们风格各异.那么这些函数库的风格在系统优化和用户体验方面又有哪些优势和缺陷呢?本文旨在于比较它们在编程模式方面的差异,讨论这些模式的基本优劣势,以及我们从中可以学到 ...

  9. [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  10. [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

随机推荐

  1. Jquery练手之-贪吃蛇

    记得以前刚出来工作的时候,什么都不懂.老板让用Jquery写一个功能,我不会写,然后跟老板说,我就是个.net程序员,为什么要写Jquery...后面我们老大给我写了!现在我才知道net程序员要会多少 ...

  2. 将与系统时间格式不同的字符串格式化为DATETIME类型

    若系统时间格式为2012/03/05 08:12:12,那么若将("2012-03-05 08:12:12")格式化为时间变量时会报错,在转化之前先将系统时间格式改变再转换就不会报 ...

  3. localstorage || globalStorage || userData

    globalStorage 这个也是html5中提出来,在浏览器关闭以后,使用globalStorage存储的信息仍能够保留下来,并且存储容量比IE的userdata大得多,一个域下面是5120k.和 ...

  4. 【转】火火火火火!看HomeKit如何改变物联网和智能家居?

    摘要: 智能家居并非新概念,然而在苹果等巨头插足之前,它却只是一盘散沙,各自为营,苹果又将如何凭借HomeKit构建起拥有统一界面和控制中心的平台来实现各种智能家居设备与应用之间的无缝连接,真正实现智 ...

  5. python3可变与不可变数据类型

    Python3中有六个标准的数据类型: Number(数字) String(字符串) List(列表) Dictionary(字典) Tuple(元组) Set(集合) 我理解的可变就是当一个变量创建 ...

  6. Egret 事件机制

    主要流程: private createGameScene():void { var JimGreen = new Boy(); var HanMeimei = new Girl(); JimGree ...

  7. iOS开发网络篇-JSON文件的解析

    一.什么是JSON数据 1.JSON的简单介绍 JSON:是一种轻量级的传输数据的格式,用于数据的交互 JSON是javascript语言的一个子集.javascript是个脚本语言(不需要编译),用 ...

  8. 转:PHP乱码问题,UTF-8(乱码)

    原文来自于:http://www.cnblogs.com/rickyNote/archive/2012/04/09/2438704.html 一.HTML页面转UTF-8编码问题 1.在head后,t ...

  9. 转:memset用法详解

    功 能 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,   块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作,   其返回值为指向S的指针.   [编辑本段 ...

  10. JavaEmail

    一.邮件相关基本概念   a)邮件服务器:某厂商提供的电子邮件服务器的集群(或群集)   b)电子邮箱:邮件服务器上提供的个人或企业的邮件空间   c)邮件传输协议:邮件服务器之间,和个人或企业与邮件 ...