当前位置:Gxlcms > 数据库问题 > SqlHelper

SqlHelper

时间:2021-07-01 10:21:17 帮助过:6人阅读

using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.Configuration; 7 using System.Data.SqlClient; 8 using System.Data; 9 10 namespace DAL 11 { 12 public class SqlHelper 13 { 14 // 连接字符串 15 private static readonly string str = ConfigurationManager.ConnectionStrings["conStr"].ConnectionString; 16 17 18 /* 返回的是受影响的行数 19 * ExecuteNonQuery()通常情况下为数据库事务处理的首选,当需要执行插入,删除,修改等操作时,首选ExecuteNonQuery(), 20 * ExecuteNonQuery()执行成功返回的是一受影响的行数,对于"Create Table"和"Drop Table"语句,返回值是0, 21 * 而对于其他类型的语句,返回值是-1,ExecuteNonQuery()操作数据时,可以不使用DataSet直接更改数据库中的数据。 22 */ 23 public static int ExecuteNonQuery(string sql, params SqlParameter[] ps) 24 { 25 using (SqlConnection con = new SqlConnection(str)) 26 { 27 using (SqlCommand cmd = new SqlCommand(sql, con)) 28 { 29 if (ps != null) 30 { 31 cmd.Parameters.AddRange(ps); 32 } 33 con.Open(); 34 return cmd.ExecuteNonQuery(); 35 } 36 } 37 } 38 39 /* ExecuteScalar()方法也可以用来执行SQL语句,但是executescalar()执行SQL语句后返回值与ExecuteNonQuery()并不相同, 40 * ExecuteNonQuery()操作后返回的是一个值,而executescalar()操作后则会返回一个对象(object), 41 * 如果执行的SQL语句是查询语句,则返回结果是查询后的第一行第一列, 42 * 如果执行的SQL语句不是一个查询语句,则会返回一个未实例化的对象,必须通过类型装换来显示。 43 * 44 * executescalar()经常使用当需要返回单一值时的情况。例如当插入一条数据信息时, 45 * 需要马上知道刚才插入的值,则可以使用executescalar()方法。 46 */ 47 public static object ExecuteScalar(string sql, params SqlParameter[] ps) 48 { 49 using (SqlConnection con = new SqlConnection(str)) 50 { 51 using (SqlCommand cmd = new SqlCommand(sql, con)) 52 { 53 if (ps != null) 54 { 55 cmd.Parameters.AddRange(ps); 56 } 57 con.Open();//打开数据库 58 return cmd.ExecuteScalar(); 59 } 60 } 61 } 62 63 /* 快速查询 64 * ExecuteReader比DataSet而言,DataReader具有较快的访问能力,并且能够使用较少的服务器资源。 65 * DataReader对象提供了游标形式的读取方式,当从结果行中读取了一行,则游标会继续读取到下一行。 66 * 通过read方法可以判断数据是否还有下一行,如果存在数据,则继续运行返回true,如果没有数据,则返回false。 67 */ 68 public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] ps) 69 { 70 SqlConnection con = new SqlConnection(str); 71 using (SqlCommand cmd = new SqlCommand(sql, con)) 72 { 73 if (ps != null) 74 { 75 cmd.Parameters.AddRange(ps); 76 } 77 try 78 { 79 con.Open(); 80 return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);//关闭关联的connection 81 } 82 catch (Exception ex) 83 { 84 con.Close(); 85 con.Dispose(); 86 throw ex; 87 } 88 89 } 90 91 } 92 93 /* 使用DataSet数据集插入记录,更新数据 94 * 为了将数据库的数据填充到dataset中,则必须先使用adapter对象的方法实现填充,当数据填充完成后, 95 * 开发人员可以将记录添加到dataset对象中,然后使用update方法将数据插入到数据库中。 96 */ 97 public static DataSet SqlDataSet(string sql, DataSet ds, string tableName, params SqlParameter[] ps) 98 { 99 using (SqlConnection con = new SqlConnection(str)) 100 { 101 102 using (SqlDataAdapter da = new SqlDataAdapter(sql, con)) 103 { 104 if (ps != null) 105 { 106 da.SelectCommand.Parameters.AddRange(ps); 107 } 108 con.Open(); 109 ds.Clear(); 110 111 da.Fill(ds,tableName); 112 113 return ds; 114 } 115 } 116 } 117 118 /* 为了将数据库的数据填充到dataset中,则必须先使用adapter对象的方法实现填充, 119 */ 120 public static int SqlDataAdapter(string sql, DataSet ds, string tableName, params SqlParameter[] ps) 121 { 122 using (SqlConnection con = new SqlConnection(str)) 123 { 124 using (SqlDataAdapter sa = new SqlDataAdapter(sql, con)) 125 { 126 SqlCommandBuilder builder = new SqlCommandBuilder(sa); 127 128 return sa.Update(ds, tableName); 129 } 130 } 131 } 132 } 133 } 134

 

SqlHelper

标签:关闭   ada   als   使用   实现   null   ret   sys   code   

人气教程排行