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