ADO.NET 基于OOP原则优化数据访问
来源:互联网 发布:手机淘宝怎样代理商品 编辑:程序博客网 时间:2024/06/05 01:04
代码复用的必要性
在实际开发中百分之80%以上都是增删改查操作,如果每次执行都创建各种数据访问对象,然后调用对象的方法,就会使得我们所编写的程序代码存在大量冗余,这对于后续的维护带来很大的不方便。
通用数据访问类SQLHelper的使用
面向对象编程的基本要求:
- 通过类或方法封装,隐藏内部细节,实现代码复用。
- 程序应该具备良好的可扩展性、可维护性和安全性。
实现代码复用技术的要求:
原则:提取不变的,封装变化的
技巧:不变的作为“方法体”,变化的作为方法“参数”。
通用数据访问类SQLHelper的编写
1–封装ExecuteScalar()方法。
private static string connString = "Server=.;DataBase=StudentManageDB;Uid=sa;Pwd=aaa999a9"; /// <summary> /// 单一结果查询 /// </summary> /// <param name="sql"></param> /// <returns></returns> public static object GetSingleResult(string sql) { SqlConnection conn = new SqlConnection(connString); SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); object result = cmd.ExecuteScalar(); conn.Close(); return result; }
2-封装ExecuteNonQuery()方法
/// <summary> /// 更新数据操作 (执行insert Update、delete类型的sql语句) /// </summary> /// <param name="sql"></param> /// <returns></returns> public static int Update(string sql) { SqlConnection conn = new SqlConnection(connString); SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); int result = cmd.ExecuteNonQuery(); conn.Close(); return result; }
3-封装ExecuteReader()方法
/// <summary> /// 返回一个结果集 /// </summary> /// <param name="sql"></param> /// <returns></returns> public static SqlDataReader GetReader(string sql) { SqlConnection conn = new SqlConnection(connString); SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); SqlDataReader objReader = cmd.ExecuteReader(CommandBehavior.CloseConnection); // conn.Close(); return objReader; }
通用数据访问类SQLHeoper代码
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Data;using System.Data.SqlClient;namespace ADO.NET3{ /// <summary> /// 通用数据访问类 /// </summary> class SQLHelper { private static string connString = "Server=.;DataBase=StudentManageDB;Uid=sa;Pwd=aaa999a9"; /// <summary> /// 单一结果查询 /// </summary> /// <param name="sql"></param> /// <returns></returns> public static object GetSingleResult(string sql) { SqlConnection conn = new SqlConnection(connString); SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); object result = cmd.ExecuteScalar(); conn.Close(); return result; } /// <summary> /// 更新数据操作 (执行insert Update、delete类型的sql语句) /// </summary> /// <param name="sql"></param> /// <returns></returns> public static int Update(string sql) { SqlConnection conn = new SqlConnection(connString); SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); int result = cmd.ExecuteNonQuery(); conn.Close(); return result; } /// <summary> /// 返回一个结果集 /// </summary> /// <param name="sql"></param> /// <returns></returns> public static SqlDataReader GetReader(string sql) { SqlConnection conn = new SqlConnection(connString); SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); SqlDataReader objReader = cmd.ExecuteReader(CommandBehavior.CloseConnection); // conn.Close(); return objReader; } }}
主程序代码
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Data;using System.Data.SqlClient;namespace ADO.NET3{ class Program { static void Main(string[] args) { ////单一或一行一列查询 //string sql = "select Count(*) from Students"; //object sql1 = SQLHelper.GetSingleResult(sql); //Console.WriteLine(sql1); //Console.ReadLine(); //// 增 删 改 数据操作 // string sql = "update students set studentname='{0}' where studentid={1}"; // sql = string.Format(sql, "修改1", 10073); // int sql2 = SQLHelper.Update(sql); // if (sql2 == 1) // { // Console.WriteLine("修改成功"); // } // else { Console.WriteLine("修改不成功"); } // Console.ReadLine(); //返回一个或多个结果集 string sql = "select StudentId,StudentName from Students;select ClassId,ClassName from StudentClass"; SqlDataReader objReader = SQLHelper.GetReader(sql); while (objReader.Read()) { Console.WriteLine(objReader["StudentId"] + " " + objReader["StudentName"]); } if (objReader.NextResult()) { while (objReader.Read()) { Console.WriteLine(objReader["ClassId"] + " " + objReader["ClassName"]); } } objReader.Close(); Console.ReadLine(); } }}
0 0
- ADO.NET 基于OOP原则优化数据访问
- ADO.NET数据访问
- ADO.NET 数据访问
- ADO.NET 数据访问介绍
- ADO.NET数据访问技术
- ADO.NET数据访问对象
- 数据访问与ADO.NET
- ADO.NET数据访问技术
- ADO.NET数据访问(2) 查询数据
- ADO.NET数据访问基础(读书笔记)
- ADO.NET 数据库访问之数据分页
- 第九讲 ADO.NET数据访问技术
- ADO.NET中的数据访问--强类型
- ADO.NET数据访问的流程
- ADO.NET 连接方式进行数据访问
- 黑马程序员-------ADO.NET数据访问
- 浅谈ADO.NET数据访问技术
- ADO.NET的数据访问对象
- ESP-01 8266转接板改造
- 命名空间
- 蓝桥杯 算法训练 区间k大数查询 JAVA
- 51Nod-1330-雕像投影
- 验证码
- ADO.NET 基于OOP原则优化数据访问
- 砝码称重
- CentOS7yum使用阿里源
- Apache James SMTP身份认证
- 《谷歌和亚马逊如何做产品》读书笔记之十一:胜在决策
- Fibonacci算法
- KMP 算法 —— 字符串匹配算法
- 单点登录SSO:概述与示例
- Android基于源码的单例模式