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 125 /// <summary> 126 /// 执行查询,并返回查询所返回的结果集中第一行的第一列 127 /// </summary> 128 /// <param name="sql">需要执行的sql语句</param> 129 /// <returns></returns> 130 131 public static object ExecuteScalar(string sql) 132 { 133 try 134 { 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 try 159 { 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 try 187 { 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 try 216 { 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 try 248 { 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 try 286 { 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 try 324 { 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 else 334 { 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 cuser_id=@id", list); 8 foreach (var item in obj) 9 { 10 Console.WriteLine(item); 11 } 12 }
输出:
admin
admin
空值
True
空值
空值
空值
空值
正在学习c#,有什么地方不对或不合适的请指教。