1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Data.SqlClient;
  5. using System.Data;
  6. using Microsoft.Win32;
  7.  
  8. namespace SqlHelp
  9. {
  10. /// <summary>
  11. /// 定义SqlParameter所需的参数对象
  12. /// </summary>
  13. public class Parameter
  14. {
  15. /// <summary>
  16. /// 参数集合构造函数
  17. /// </summary>
  18. /// <param name="paramname">参数名称</param>
  19. /// <param name="value">参数所对应的对象的值</param>
  20. public Parameter(string paramname, object value)
  21. {
  22. this.ParamName = paramname;
  23. this.Obj = value;
  24. }
  25. /// <summary>
  26. /// 参数名称
  27. /// </summary>
  28. public string ParamName
  29. {
  30. get;
  31. set;
  32. }
  33. /// <summary>
  34. /// 参数名称所对应的对象的值
  35. /// </summary>
  36. public object Obj
  37. {
  38. get;
  39. set;
  40. }
  41. }
  42. /// <summary>
  43. /// SqlHelper ^_^ !
  44. /// </summary>
  45. public class SqlHelper
  46. {
  47. /// <summary>
  48. /// 连接字符串字段
  49. /// </summary>
  50. private static string connStr;
  51.  
  52. /// <summary>
  53. /// SQL连接字符串属性
  54. /// </summary>
  55. public static string ConnStr
  56. {
  57. get { return SqlHelper.connStr; }
  58. set { SqlHelper.connStr = value; }
  59. }
  60.  
  61. private static SqlParameter[] GetSqlParameterToArr(List<Parameter> listP)
  62. {
  63. List<SqlParameter> list = new List<SqlParameter>();
  64. foreach (var item in listP)
  65. {
  66. list.Add(new SqlParameter(item.ParamName, item.Obj));
  67. }
  68. return list.ToArray();
  69. }
  70.  
  71. /// <summary>
  72. /// 执行TSQL 语句并返回受影响的行
  73. /// </summary>
  74. /// <param name="sql">需要执行的sql语句</param>
  75. /// <returns></returns>
  76.  
  77. public static int ExecuteNonQuery(string sql)
  78. {
  79. try
  80. {
  81. using (SqlConnection conn = new SqlConnection(connStr))
  82. {
  83. conn.Open();
  84. using (SqlCommand cmd = conn.CreateCommand())
  85. {
  86. cmd.CommandText = sql;
  87. return cmd.ExecuteNonQuery();
  88. }
  89. }
  90. }
  91. catch (Exception ex)
  92. {
  93. throw new Exception(ex.Message);
  94. }
  95. }
  96.  
  97. /// <summary>
  98. /// 执行TSQL 语句并返回受影响的行
  99. /// </summary>
  100. /// <param name="sql">需要执行的sql语句</param>
  101. /// <param name="paramList">参数的泛型集合</param>
  102. /// <returns></returns>
  103. public static int ExecuteNonQuery(string sql, List<Parameter> paramList)
  104. {
  105. try
  106. {
  107. using (SqlConnection conn = new SqlConnection(connStr))
  108. {
  109. conn.Open();
  110. using (SqlCommand cmd = conn.CreateCommand())
  111. {
  112. cmd.CommandText = sql;
  113. cmd.Parameters.AddRange(GetSqlParameterToArr(paramList));
  114. return cmd.ExecuteNonQuery();
  115. }
  116. }
  117. }
  118. catch (Exception ex)
  119. {
  120. throw new Exception(ex.Message);
  121. }
  122. }
  123.  
  124. /// <summary>
  125. /// 执行查询,并返回查询所返回的结果集中第一行的第一列
  126. /// </summary>
  127. /// <param name="sql">需要执行的sql语句</param>
  128. /// <returns></returns>
  129.  
  130. public static object ExecuteScalar(string sql)
  131. {
  132. try
  133. {
  134. using (SqlConnection conn = new SqlConnection(connStr))
  135. {
  136. conn.Open();
  137. using (SqlCommand cmd = conn.CreateCommand())
  138. {
  139. cmd.CommandText = sql;
  140. return cmd.ExecuteScalar();
  141. }
  142. }
  143. }
  144. catch (Exception ex)
  145. {
  146. throw new Exception(ex.Message);
  147. }
  148. }
  149. /// <summary>
  150. /// 执行查询,并返回查询所返回的结果集中第一行的第一列
  151. /// </summary>
  152. /// <param name="sql">需要执行的sql语句</param>
  153. /// <param name="paramList">参数的泛型集合</param>
  154. /// <returns></returns>
  155. public static object ExecuteScalar(string sql, List<Parameter> paramList)
  156. {
  157. try
  158. {
  159. using (SqlConnection conn = new SqlConnection(connStr))
  160. {
  161. conn.Open();
  162. using (SqlCommand cmd = conn.CreateCommand())
  163. {
  164. cmd.CommandText = sql;
  165. cmd.Parameters.AddRange(GetSqlParameterToArr(paramList));
  166. return cmd.ExecuteScalar();
  167. }
  168. }
  169. }
  170. catch (Exception ex)
  171. {
  172. throw new Exception(ex.Message);
  173. }
  174. }
  175.  
  176. /// <summary>
  177. /// 返回已经填充结果的DataSet
  178. /// </summary>
  179. /// <param name="sql">需要执行的sql语句</param>
  180. /// <returns></returns>
  181.  
  182. public static DataSet ExecuteDataSet(string sql)
  183. {
  184. try
  185. {
  186. using (SqlConnection conn = new SqlConnection(connStr))
  187. {
  188. conn.Open();
  189. using (SqlCommand cmd = conn.CreateCommand())
  190. {
  191. cmd.CommandText = sql;
  192. SqlDataAdapter adapter = new SqlDataAdapter(cmd);
  193. DataSet dataset = new DataSet();
  194. adapter.Fill(dataset);
  195. return dataset;
  196. }
  197. }
  198. }
  199. catch (Exception ex)
  200. {
  201. throw new Exception(ex.Message);
  202. }
  203. }
  204.  
  205. /// <summary>
  206. /// 返回已经填充结果的DataSet
  207. /// </summary>
  208. /// <param name="sql">需要执行的sql语句</param>
  209. /// <param name="paramList">参数的泛型集合</param>
  210. /// <returns></returns>
  211. public static DataSet ExecuteDataSet(string sql, List<Parameter> paramList)
  212. {
  213. try
  214. {
  215. using (SqlConnection conn = new SqlConnection(connStr))
  216. {
  217. conn.Open();
  218. using (SqlCommand cmd = conn.CreateCommand())
  219. {
  220. cmd.CommandText = sql;
  221. cmd.Parameters.AddRange(GetSqlParameterToArr(paramList));
  222. SqlDataAdapter adapter = new SqlDataAdapter(cmd);
  223. DataSet dataset = new DataSet();
  224. adapter.Fill(dataset);
  225. return dataset;
  226. }
  227. }
  228. }
  229. catch (Exception ex)
  230. {
  231. throw new Exception(ex.Message);
  232. }
  233. }
  234.  
  235. /// <summary>
  236. /// 返回查询结果集所返回的字段值的泛型集合
  237. /// </summary>
  238. /// <param name="sql">需要执行的sql语句</param>
  239. /// <returns></returns>
  240.  
  241. public static List<object> ExecuteReader(string sql)
  242. {
  243. List<object> obj = new List<object>();
  244. try
  245. {
  246. using (SqlConnection conn = new SqlConnection(connStr))
  247. {
  248. conn.Open();
  249. using (SqlCommand cmd = conn.CreateCommand())
  250. {
  251. cmd.CommandText = sql;
  252. using (SqlDataReader reader = cmd.ExecuteReader())
  253. {
  254. while (reader.Read())
  255. {
  256. for (int i = ; i < reader.FieldCount; i++)
  257. {
  258. obj.Add(reader.IsDBNull(i) ? "空值" : reader.GetValue(i));
  259. }
  260. }
  261. return obj;
  262. }
  263. }
  264. }
  265. }
  266. catch (Exception ex)
  267. {
  268. throw new Exception(ex.Message);
  269. }
  270. }
  271.  
  272. /// <summary>
  273. /// 返回查询结果集所返回的字段值的泛型集合
  274. /// </summary>
  275. /// <param name="sql">需要执行的sql语句</param>
  276. /// <param name="paramList">参数的泛型集合</param>
  277. /// <returns></returns>
  278. public static List<object> ExecuteReader(string sql, List<Parameter> paramList)
  279. {
  280. List<object> obj = new List<object>();
  281. try
  282. {
  283. using (SqlConnection conn = new SqlConnection(connStr))
  284. {
  285. conn.Open();
  286. using (SqlCommand cmd = conn.CreateCommand())
  287. {
  288. cmd.CommandText = sql;
  289. cmd.Parameters.AddRange(GetSqlParameterToArr(paramList));
  290. using (SqlDataReader reader = cmd.ExecuteReader())
  291. {
  292. while (reader.Read())
  293. {
  294. for (int i = ; i < reader.FieldCount; i++)
  295. {
  296. obj.Add(reader.IsDBNull(i) ? "空值" : reader.GetValue(i));
  297. }
  298. }
  299. return obj;
  300. }
  301. }
  302. }
  303. }
  304. catch (Exception ex)
  305. {
  306. throw new Exception(ex.Message);
  307. }
  308. }
  309.  
  310. /// <summary>
  311. /// 获取SqlServer数据库实例名数组
  312. /// </summary>
  313. /// <returns></returns>
  314. public static string[] GetInstances()
  315. {
  316. RegistryKey reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server");
  317. string[] instances = (string[])reg.GetValue("InstalledInstances", "");
  318. try
  319. {
  320. if (instances.Length > )
  321. {
  322. for (int i = ; i < instances.Length; i++)
  323. {
  324. if (instances[i] == "MSSQLSERVER")
  325. {
  326. instances[i] = System.Environment.MachineName;
  327. }
  328. else
  329. {
  330. instances[i] = System.Environment.MachineName + @"\" + instances[i];
  331. }
  332. }
  333. }
  334. return instances;
  335. }
  336. catch (Exception ex)
  337. {
  338. throw new Exception(ex.Message);
  339. }
  340. }
  341. }
  342. }

测试:
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

在按钮点击事件中加入:

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

输出:

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. 关于$_SERVER 常量 HTTP_X_FORWARDED_HOST与 HTTP_HOST的问题

    今天在看ecshop的源码,发现了用$_SERVER['HTTP_X_FORWARDED_HOST']来判断主机的地址,就目前来说很多人都是直接通过$_SERVER['HTTP_HOST']来判断的, ...

  2. jQuery判断浏览器

    在jQuery1.9版本之前,jQuery 提供了 browser 标记 <script type="text/javascript" src="http://aj ...

  3. ASP.NET 无权访问所请求的资源。请考虑对 ASP.NET 请求标识授予访问此资源的权限。

    如题,在编译程序时,没有问题,但是通过iis设置的网站进入时,报如上错误.asp.net有个运行账户,一般情况下iis5为aspnet,iis6为network service,在iis里面确认一下是 ...

  4. oracle中字符串的大小比较,字符串与数字的比较和运算

    Oracle比较字符串是根据ASCII码来的,第一个字母的ASCII大小比较如果相等再比较下一个,类推.字符串和数字进行操作是会报异常的,因为类型不一样不能进行比较. Oracle在执行SQL的时候有 ...

  5. 新发现:AirDroid(用Web端控制自己的手机发信息)

    http://web.airdroid.com/ 好多功能呀,有空研究研究 http://jingyan.baidu.com/article/b24f6c82cd4ade86bfe5daf3.html ...

  6. Android 首次进入应用时加载引导界面

    功能需求:首次进入应用时加载引导界面 思路: 1.首次进入,怎么判断?查看SharedPreferences中某个字段 2.基本上每个应用都有个进入实际功能是的动画加载页面,我们可以在该Activit ...

  7. 【转】Android进阶2之Activity之间数据交流(onActivityResult的用法)----不错

    原文网址:http://blog.csdn.net/sjf0115/article/details/7387467 主要功能: 在一个主界面(主Activity)上能连接往许多不同子功能模块(子Act ...

  8. SOFTWARE_INTRODUCE_02

    几款网页数据抓取软件 近年来,随着国内大数据战略越来越清晰,数据抓取和信息采集系列产品迎来了巨大的发展机遇,采集产品数量也出现迅猛增长.然而与产品种类快速增长相反的是,信息采集技术相对薄弱.市场竞争激 ...

  9. 【mac开发.NET】No installed provisioning profiles match the installed iOS signing identities

    编译错误提示 /Library/Frameworks/Mono.framework/External/xbuild/Xamarin/iOS/Xamarin.iOS.Common.targets: Er ...

  10. ubuntu安装mysql的步骤和配置总结

    因为经常要在ubuntu linux的环境下做一些开发工作.很多时候也牵涉到mysql相关的开发工作.于是就把整个过程做了一个整理,以方便以后再次安装配置的时候参考,也希望能够让新手少走点弯路. 其实 ...