ASP.NET对SQLServer的通用数据库访问类

2025-05-29 0 96

本文模仿实现数据库访问的通用类,代码清晰,而且很实用,包括了对数据库的所有的常用的操作。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214
/// <summary>

/// 数据库访问通用类

/// </summary>

public class SqlHelper

{

private string connectionString;

/// <summary>

/// 设定数据库访问字符串

/// </summary>

public string ConnectionString

{

set { connectionString = value; }

}

/// <summary>

/// 构造函数

/// </summary>

/// <param name="connectionString">数据库访问字符串</param>

public SqlHelper(string connectionString)

{

this.connectionString = connectionString;

}

/// <summary>

/// 执行一个查询,并返回查询结果

/// </summary>

/// <param name="sql">要执行的sql语句</param>

/// <param name="commandType">要执行的查询语句的类型,如存储过程或者sql文本命令</param>

/// <returns>返回查询结果集</returns>

public DataTable ExecuteDataTable(string sql,CommandType commandType)

{

return ExecuteDataTable(sql, commandType, null);

}

/// <summary>

/// 执行一个查询,并返回结果集

/// </summary>

/// <param name="sql">要执行的sql文本命令</param>

/// <returns>返回查询的结果集</returns>

public DataTable ExecuteDataTable(string sql)

{

return ExecuteDataTable(sql, CommandType.Text, null);

}

/// <summary>

/// 执行一个查询,并返回查询结果

/// </summary>

/// <param name="sql">要执行的sql语句</param>

/// <param name="commandtype">要执行查询语句的类型,如存储过程或者sql文本命令</param>

/// <param name="parameters">Transact-SQL语句或者存储过程参数数组</param>

/// <returns></returns>

public DataTable ExecuteDataTable(string sql, CommandType commandtype, SqlParameter[] parameters)

{

DataTable data = new DataTable(); //实例化datatable,用于装载查询结果集

using (SqlConnection con = new SqlConnection(connectionString))

{

using (SqlCommand cmd = new SqlCommand(sql, con))

{

cmd.CommandType = commandtype;//设置command的commandType为指定的Commandtype

//如果同时传入了参数,则添加这些参数

if (parameters != null)

{

foreach (SqlParameter parameter in parameters)

{

cmd.Parameters.Add(parameter);

}

}

//通过包含查询sql的sqlcommand实例来实例化sqldataadapter

SqlDataAdapter adapter = new SqlDataAdapter(cmd);

adapter.Fill(data);//填充datatable

}

}

return data;

}

/// <summary>

/// 返回一个SqlDataReader对象的实例

/// </summary>

/// <param name="sql">要执行的SQl查询命令</param>

/// <returns></returns>

public SqlDataReader ExecuteReader(string sql)

{

return ExecuteReader(sql, CommandType.Text, null);

}

/// <summary>

///

/// </summary>

/// <param name="sql">要执行的sql语句</param>

/// <param name="commandType">要执行查询语句的类型,如存储过程或者SQl文本命令</param>

/// <returns></returns>

public SqlDataReader ExecuteReader(string sql,CommandType commandType)

{

return ExecuteReader(sql, commandType, null);

}

/// <summary>

/// 返回一个sqldatareader对象的实例

/// </summary>

/// <param name="sql"></param>

/// <param name="commandType"></param>

/// <param name="parameters"></param>

/// <returns></returns>

public SqlDataReader ExecuteReader(string sql, CommandType commandType, SqlParameter[] parameters)

{

SqlConnection con = new SqlConnection(connectionString);

SqlCommand cmd = new SqlCommand(sql, con);

if (parameters != null)

{

foreach (SqlParameter parameter in parameters)

{

cmd.Parameters.Add(parameters);

}

}

con.Open();

//CommandBehavior.CloseConnection参数指示关闭reader对象时关闭与其关联的Connection对象

return cmd.ExecuteReader(CommandBehavior.CloseConnection);

}

/// <summary>

/// 执行一个查询,返回结果集的首行首列。忽略其他行,其他列

/// </summary>

/// <param name="sql">要执行的SQl命令</param>

/// <returns></returns>

public Object ExecuteScalar(string sql)

{

return ExecuteScalar(sql, CommandType.Text, null);

}

/// <summary>

///

/// </summary>

/// <param name="sql"></param>

/// <param name="commandType"></param>

/// <returns></returns>

public Object ExecuteScalar(string sql, CommandType commandType)

{

return ExecuteScalar(sql, commandType, null);

}

/// <summary>

///

/// </summary>

/// <param name="sql"></param>

/// <param name="commandType">参数类型</param>

/// <param name="parameters"></param>

/// <returns></returns>

public Object ExecuteScalar(string sql,CommandType commandType, SqlParameter[] parameters)

{

Object result=null;

SqlConnection con=new SqlConnection(connectionString);

SqlCommand cmd=new SqlCommand(sql,con);

cmd.CommandType= commandType;

if(parameters!=null)

{

foreach (SqlParameter parapmeter in parameters)

{

cmd.Parameters.Add(parapmeter);

}

}

con.Open();

result=cmd.ExecuteScalar();

con.Close();

return result;

}

/// <summary>

/// 对数据库进行增删改的操作

/// </summary>

/// <param name="sql">要执行的sql命令</param>

/// <returns></returns>

public int ExecuteNonQuery(string sql)

{

return ExecuteNonQuery(sql, CommandType.Text, null);

}

/// <summary>

/// 数据库进行增删改的操作

/// </summary>

/// <param name="sql">对数据库进行操作的sql命令</param>

/// <param name="commandType">要执行查询语句的类型,如存储过程或者sql文本命令</param>

/// <returns></returns>

public int ExecuteNonQuery(string sql, CommandType commandType)

{

return ExecuteNonQuery(sql, commandType, null);

}

/// <summary>

/// 对数据库进行增删改的操作

/// </summary>

/// <param name="sql">要执行的sql语句</param>

/// <param name="commandType">要执行的查询语句类型,如存储过程或者sql文本命令</param>

/// <param name="parameters">Transact-SQL语句或者存储过程的参数数组</param>

/// <returns></returns>

public int ExecuteNonQuery(string sql, CommandType commandType, SqlParameter[] parameters)

{

int count = 0;

SqlConnection con = new SqlConnection(connectionString);

SqlCommand cmd = new SqlCommand(sql, con);

cmd.CommandType = commandType;

if (parameters != null)

{

foreach(SqlParameter parameter in parameters)

{

cmd.Parameters.Add(parameter);

}

}

con.Open();

count = cmd.ExecuteNonQuery();

con.Close();

return count;

}

/// <summary>

/// 返回当前连接的数据库中所有用户创建的数据库

/// </summary>

/// <returns></returns>

public DataTable GetTables()

{

DataTable table = null;

using (SqlConnection con = new SqlConnection(connectionString))

{

con.Open();

table = con.GetSchema("Tables");

}

return table;

}

}

如果我们建立了一个对数据库访问的通用类以后,在随数据库进行操作的时候吗,就只需要先实例化对象,然后根据自己的需要,调用相应的方法就可以完成对数据库的所有操作。这就是数据库访问层和业务逻辑层分开的好处。
这样书写的代码,可以大大的减少我们代码的复杂度,而且,繁琐度也大大的降低了。

以上就是本文的全部内容,希望对大家的学习有所帮助。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 ASP.NET对SQLServer的通用数据库访问类 https://www.kuaiidc.com/100871.html

相关文章

发表评论
暂无评论