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. 《C++游戏开发》笔记十四 平滑过渡的战争迷雾(二) 实现:真正的迷雾来了

    本系列文章由七十一雾央编写,转载请注明出处.  http://blog.csdn.net/u011371356/article/details/9712321 作者:七十一雾央 新浪微博:http:/ ...

  2. Delphi Keycode

    Keycode表 字母和数字键的键码值(keyCode) 按键 键码 按键 键码 按键 键码 按键 键码 A 65 J 74 S 83 1 49 B 66 K 75 T 84 2 50 C 67 L ...

  3. JavaScript语言内置对象

    String(字符串对象)RegExp(正则表达式对象)Number(数字对象)Math(数学对象)Function(函数对象)Error(异常对象)Date(日期/时间对象)Boolean(布尔对象 ...

  4. Sublime Text 3 中文汉化绿色破解特别版下载

    Sublime Text是一款代码编辑器,几乎支持所有语言的编写.sublime给人们的印象不外乎小巧.速度快.并且快捷键丰富而强大.不知繁多的插件. sublime一般被应用到前端的开发.Subli ...

  5. 一个测ip和端口是否联通的工具类

    public class TestIp { public static void main(String[] args) { Socket connect = new Socket(); try { ...

  6. PHP之路——Apache启动失败查看日志

    windows下用运行 eventvwr--->windows日志--->应用程序日志-->软件

  7. jQuery的选择器中的通配符[id^='code'] 【转】

    JQuery 1.选择器 (1)通配符: $("input[id^='code']");//id属性以code开始的所有input标签 $("input[id$='cod ...

  8. SPSS与聚类分析

    1.进行K均值聚类分析时需要线标准化处理,抛弃量纲差异,比如说数值型变量有的以千记有的以百分数记.2.层次聚类就是先把每个样本都看成一个独立的类:聚类特征(Clustering Feature, CF ...

  9. ChatCell

    import UIKit let chatCellHeight: CGFloat = 72 let chatCellInsetLeft =  chatCellHeight + 8 class Chat ...

  10. Jest

    http://www.ibm.com/developerworks/cn/java/j-javadev2-24/