菜鸟学习Ado.net笔记一:Ado.net学习之SqlHelper类
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类的更多相关文章
- tensorflow编程学习路线及笔记
话不多说,直接上图! 关于人工智能算法学习思路,欢迎浏览我的另一篇随笔:如果你想开始学习算法,不妨先了解人工智能有哪些方向? 关于python编程学习路线及笔记,欢迎浏览我的另一篇随笔:python编 ...
- c#学习笔记04——ADO.NET
ADO.NET结构:ADO.NET建立在几个核心类之上,这些类可以分为两组 包含和管理数据的类:DataSet DataTable DataRow DataRelation... 链接数据源的类:Co ...
- 菜鸟教程之学习Shell script笔记(上)
菜鸟教程之学习Shell script笔记 以下内容是,学习菜鸟shell教程整理的笔记 菜鸟教程之shell教程:http://www.runoob.com/linux/linux-shell.ht ...
- ADO.Net笔记整理(一)
几次装机,Notes已烟消云散,近日因为Node.js死活搞不定,无奈装机,备份好的东东,没想到磁盘扇区出现异常,可能是PE启动盘的病毒,只好将磁盘全部重新分区,恢复数据也懒得恢复了,日积月累关乎将来 ...
- ADO.NET复习——自己编写SqlHelper类
今天复习了一次ADO.NET基础,整理一下自己的认为的重点: 编写SqlHelper类,方便我们执行数据库语句,这时可以直接调用封装在SqlHelper类的方法.现在大多数公司面试的时候,给你的面试题 ...
- JavaSE学习笔记(5)---内部类和String类
JavaSE学习笔记(5)---内部类和String类 一.内部类基础 转自菜鸟教程 在 Java 中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来 ...
- 跟着鸟哥学Linux系列笔记3-第11章BASH学习
跟着鸟哥学Linux系列笔记0-扫盲之概念 跟着鸟哥学Linux系列笔记0-如何解决问题 跟着鸟哥学Linux系列笔记1 跟着鸟哥学Linux系列笔记2-第10章VIM学习 认识与学习bash 1. ...
- MXNet设计笔记之:深度学习的编程模式比较
市面上流行着各式各样的深度学习库,它们风格各异.那么这些函数库的风格在系统优化和用户体验方面又有哪些优势和缺陷呢?本文旨在于比较它们在编程模式方面的差异,讨论这些模式的基本优劣势,以及我们从中可以学到 ...
- [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
随机推荐
- 当OOP语言RAII特性发展到functional形式的极致
本文主要站在C++程序员的思维角度思量. functional之路 lambda表达式 lambda表达式,是一段代码片段.函数实现体中出现的可重用的代码块. 在C++之前,C语言最小可复用流程模块, ...
- 『重构--改善既有代码的设计』读书笔记----Remove Assignments to Parameters
C++存在按值传递和按引用传递两种传递方式,Java严格按照按值传递这种方式来进行.以按值传递方式的角度来说,如果你 int test(int a) { ) { a = 1; } return a; ...
- 深入浅出理解QTimeLine类
网上找了下QTimeLIne类的介绍,要么就是代码一贴自己看去,要么就是说不到重点,正巧自己项目遇到这个类,在这里写一下,给需要的同学看下. 因为我最近需要有动画方面配合时间间隔触发QGraphics ...
- CentOS7 开启关闭网卡
ifdown ifcfg-enp7s0 关闭网卡 ifup ifcfg-enp7s0 开启网卡
- ThinkPHP 使用极光推送给ios推送消息
HTML <div id="wrap"><a href="<{:U('Push/pushData')}>">推送</a ...
- Python报错:SyntaxError: Non-ASCII character '\xe5' in file的解决方法
SyntaxError: Non-ASCII character '\xe5' in file 原因:Python默认是以ASCII作为编码方式的,如果在自己的Python源码中包含了中文(或者其他的 ...
- codevs 1107 等价表达式
传送门 题解:第一眼这题好像非常难得样子,简直没有思路.但是这可以用栈带入特殊值来解决.这里用到两个栈,一个是存贮数字,另一个存贮运算符,按优先级进行运算.当读入的运算符比运算符栈的栈顶元素优先级低时 ...
- listview底部增加按钮
View bottomView=getActivity().getLayoutInflater().inflate(R.layout.btn_my_course, null); myCourses = ...
- Sample RWD Setup for Client-Side Development
RWD and RESS concepts fluid images, responsive grids, and media queries. Twitter's Bootstrap based o ...
- 设计模式(三): FACTORY工厂模式 -- 创建型模式
1.定义 定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到了子类. 2.适用场景 1.第一种情况是对于某个产品,调用者清楚地知道应该使用哪个具体 ...