当前位置: 代码迷 >> SQL >> 初学者学习Ado.net笔记一:Ado.net学习之SqlHelper类
  详细解决方案

初学者学习Ado.net笔记一:Ado.net学习之SqlHelper类

热度:71   发布时间:2016-05-05 10:03:08.0
菜鸟学习Ado.net笔记一:Ado.net学习之SqlHelper类
  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             try106             {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 125         /// <summary>126         /// 执行查询,并返回查询所返回的结果集中第一行的第一列 127         /// </summary>128         /// <param name="sql">需要执行的sql语句</param>129         /// <returns></returns>130 131         public static object ExecuteScalar(string sql)132         {133             try134             {135                 using (SqlConnection conn = new SqlConnection(connStr))136                 {137                     conn.Open();138                     using (SqlCommand cmd = conn.CreateCommand())139                     {140                         cmd.CommandText = sql;141                         return cmd.ExecuteScalar();142                     }143                 }144             }145             catch (Exception ex)146             {147                 throw new Exception(ex.Message);148             }149         }150         /// <summary>151         /// 执行查询,并返回查询所返回的结果集中第一行的第一列 152         /// </summary>153         /// <param name="sql">需要执行的sql语句</param>154         /// <param name="paramList">参数的泛型集合</param>155         /// <returns></returns>156         public static object ExecuteScalar(string sql, List<Parameter> paramList)157         {158             try159             {160                 using (SqlConnection conn = new SqlConnection(connStr))161                 {162                     conn.Open();163                     using (SqlCommand cmd = conn.CreateCommand())164                     {165                         cmd.CommandText = sql;166                         cmd.Parameters.AddRange(GetSqlParameterToArr(paramList));167                         return cmd.ExecuteScalar();168                     }169                 }170             }171             catch (Exception ex)172             {173                 throw new Exception(ex.Message);174             }175         }176 177 178         /// <summary>179         /// 返回已经填充结果的DataSet 180         /// </summary>181         /// <param name="sql">需要执行的sql语句</param>182         /// <returns></returns>183 184         public static DataSet ExecuteDataSet(string sql)185         {186             try187             {188                 using (SqlConnection conn = new SqlConnection(connStr))189                 {190                     conn.Open();191                     using (SqlCommand cmd = conn.CreateCommand())192                     {193                         cmd.CommandText = sql;194                         SqlDataAdapter adapter = new SqlDataAdapter(cmd);195                         DataSet dataset = new DataSet();196                         adapter.Fill(dataset);197                         return dataset;198                     }199                 }200             }201             catch (Exception ex)202             {203                 throw new Exception(ex.Message);204             }205         }206 207         /// <summary>208         /// 返回已经填充结果的DataSet 209         /// </summary>210         /// <param name="sql">需要执行的sql语句</param>211         /// <param name="paramList">参数的泛型集合</param>212         /// <returns></returns>213         public static DataSet ExecuteDataSet(string sql, List<Parameter> paramList)214         {215             try216             {217                 using (SqlConnection conn = new SqlConnection(connStr))218                 {219                     conn.Open();220                     using (SqlCommand cmd = conn.CreateCommand())221                     {222                         cmd.CommandText = sql;223                         cmd.Parameters.AddRange(GetSqlParameterToArr(paramList));224                         SqlDataAdapter adapter = new SqlDataAdapter(cmd);225                         DataSet dataset = new DataSet();226                         adapter.Fill(dataset);227                         return dataset;228                     }229                 }230             }231             catch (Exception ex)232             {233                 throw new Exception(ex.Message);234             }235         }236 237 238         /// <summary>239         /// 返回查询结果集所返回的字段值的泛型集合 240         /// </summary>241         /// <param name="sql">需要执行的sql语句</param>242         /// <returns></returns>243 244         public static List<object> ExecuteReader(string sql)245         {246             List<object> obj = new List<object>();247             try248             {249                 using (SqlConnection conn = new SqlConnection(connStr))250                 {251                     conn.Open();252                     using (SqlCommand cmd = conn.CreateCommand())253                     {254                         cmd.CommandText = sql;255                         using (SqlDataReader reader = cmd.ExecuteReader())256                         {257                             while (reader.Read())258                             {259                                 for (int i = 0; i < reader.FieldCount; i++)260                                 {261                                     obj.Add(reader.IsDBNull(i) ? "空值" : reader.GetValue(i));262                                 }263                             }264                             return obj;265                         }266                     }267                 }268             }269             catch (Exception ex)270             {271                 throw new Exception(ex.Message);272             }273         }274 275 276         /// <summary>277         /// 返回查询结果集所返回的字段值的泛型集合 278         /// </summary>279         /// <param name="sql">需要执行的sql语句</param>280         /// <param name="paramList">参数的泛型集合</param>281         /// <returns></returns>282         public static List<object> ExecuteReader(string sql, List<Parameter> paramList)283         {284             List<object> obj = new List<object>();285             try286             {287                 using (SqlConnection conn = new SqlConnection(connStr))288                 {289                     conn.Open();290                     using (SqlCommand cmd = conn.CreateCommand())291                     {292                         cmd.CommandText = sql;293                         cmd.Parameters.AddRange(GetSqlParameterToArr(paramList));294                         using (SqlDataReader reader = cmd.ExecuteReader())295                         {296                             while (reader.Read())297                             {298                                 for (int i = 0; i < reader.FieldCount; i++)299                                 {300                                     obj.Add(reader.IsDBNull(i) ? "空值" : reader.GetValue(i));301                                 }302                             }303                             return obj;304                         }305                     }306                 }307             }308             catch (Exception ex)309             {310                 throw new Exception(ex.Message);311             }312         }313 314 315         /// <summary>316         /// 获取SqlServer数据库实例名数组 317         /// </summary>318         /// <returns></returns>319         public static string[] GetInstances()320         {321             RegistryKey reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server");322             string[] instances = (string[])reg.GetValue("InstalledInstances", "");323             try324             {325                 if (instances.Length > 0)326                 {327                     for (int i = 0; i < instances.Length; i++)328                     {329                         if (instances[i] == "MSSQLSERVER")330                         {331                             instances[i] = System.Environment.MachineName;332                         }333                         else334                         {335                             instances[i] = System.Environment.MachineName + @"\" + instances[i];336                         }337                     }338                 }339                 return instances;340             }341             catch (Exception ex)342             {343                 throw new Exception(ex.Message);344             }345         }346     }347 }

测试:
1、获取实例

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

引入SqlHelper

using SqlHelp

窗体load事件加入:

 1 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 [email protected]", list); 8             foreach (var item in obj) 9             {10                 Console.WriteLine(item);11             }12         }

输出:

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

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