SQLhelper助手类编写:

 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6
7 using System.Data;
8 using System.Data.SqlClient;
9 using System.Configuration;
10
11 namespace DAL
12 {
13 public class SQLHelper
14 {
15 SqlCommand cmd = null;
16
17 public string strcon()
18 {
19 string strcon = ConfigurationManager.ConnectionStrings["strcon"].ConnectionString;
20
21 return strcon;
22 }
23
24 public SqlConnection getcon()
25 {
26 SqlConnection con = new SqlConnection(strcon());
27
28 if (con.State == ConnectionState.Closed)
29 {
30 con.Open();
31 }
32
33 return con;
34 }
35
36 /// <summary>
37 /// 执行增删改查的SQL语句
38 /// </summary>
39 /// <param name="sql">要执行的SQL</param>
40 /// <returns>返回执行SQL语句后影响的行数</returns>
41 public int ExecuteNonQuery(string sql)
42 {
43 int res;
44
45 try
46 {
47 cmd = new SqlCommand(sql, getcon());
48
49 res = cmd.ExecuteNonQuery();
50 }
51 catch (Exception ex)
52 {
53 throw ex;
54 }
55 finally
56 {
57 if (getcon().State == ConnectionState.Open)
58 {
59 getcon().Close();
60 }
61 }
62
63 return res;
64 }
65
66 /// <summary>
67 /// 执行传入的SQL查询语句
68 /// </summary>
69 /// <param name="sql">要执行的查询SQL</param>
70 /// <returns>返回查询SQL语句的数据集</returns>
71 public DataTable ExecuteQuery(string sql)
72 {
73 DataTable dt = new DataTable();
74
75 SqlConnection con = new SqlConnection(strcon());
76
77 //创建一个SqlCommand对象cmd,让其连接数据库,并指向sql语句。
78 cmd = new SqlCommand(sql, getcon());
79
80 //执行cmd连接的数据库.使用using后在执行完毕后,直接关闭sdr。不需要写sdr.closed.
81 using (SqlDataReader sdr = cmd.ExecuteReader())
82 {
83 dt.Load(sdr);// Load 适合于SqlDataReader。如果是SqlDataAdapter,则要用到 Fill 方法。
84 }
85
86 getcon().Close();
87
88 return dt;
89 }
90 }
91 }

personDAO员工操作类编写:

  1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Threading.Tasks;
6
7 using System.Data;
8 using System.Data.SqlClient;
9
10 namespace DAL
11 {
12 public class personDAO
13 {
14 SQLHelper sq = null;
15
16 public personDAO()
17 {
18 sq = new SQLHelper();
19 }
20
21 /// <summary>
22 /// 增加员工信息
23 /// </summary>
24 /// <param name="name">要添加的员工姓名</param>
25 /// <param name="sex">要添加的员工性别</param>
26 /// <param name="salary">要添加的员工工资</param>
27 /// <returns>返回真假值:如果是真显示添加成功,如果是假显示添加失败</returns>
28 public bool insert(string name, string sex, string salary)
29 {
30 bool flag = false;
31
32 string sql = "insert into person ([name], sex, salary) values ('"+name+"', '"+sex+"', '"+salary+"')";
33
34 if (sq.ExecuteNonQuery(sql) > 0)
35 {
36 flag = true;
37 }
38
39 return flag;
40 }
41
42 /// <summary>
43 /// 删除员工信息
44 /// </summary>
45 /// <param name="id">要删除员工的id</param>
46 /// <returns>返回真假值:如果是真显示删除成功,如果是假显示删除失败</returns>
47 public bool delete(string id)
48 {
49 bool flag = false;
50
51 string sql = "delete from person where id = '" +id+ "'";
52
53 if (sq.ExecuteNonQuery(sql) > 0)
54 {
55 flag = true;
56 }
57
58 return flag;
59 }
60
61 /// <summary>
62 /// 更改员工信息
63 /// </summary>
64 /// <param name="id">要更改的员工编号</param>
65 /// <param name="name">要更改的员工姓名</param>
66 /// <param name="sex">要更改的员工性别</param>
67 /// <param name="salary">要更改的员工工资</param>
68 /// <returns>返回真假值:如果是真显示更改成功,如果是假显示更改失败</returns>
69 public bool update(string id, string name, string sex, string salary)
70 {
71 bool flag = false;
72
73 string sql ="update person set [name] = '"+name+"', sex = '"+sex+"', salary = '"+salary+"' where id = '"+id+"'";
74
75 if (sq.ExecuteNonQuery(sql) > 0)
76 {
77 flag = true;
78 }
79
80 return flag;
81 }
82
83 /// <summary>
84 /// 判断员工姓名是否重复
85 /// </summary>
86 /// <param name="name">要进行判断的员工姓名</param>
87 /// <returns>返回真假值:如果是真代表重复,如果是假进行添加</returns>
88 public bool repeat(string name)
89 {
90 bool flag = false;
91
92 string sql = "select * from person where [name] = '" +name+ "'";
93
94 #region 这样写的话,还要重新建立一张虚拟表,如果直接用下面的方法,进行行数的判断就不需要建立。
95 //DataTable dt = sq.ExecuteQuery(sql);
96
97 //if (dt.Rows.Count > 0)//dt.Rows.Count 这个方法是检查返回的虚拟表中是不是有数据,如果有的话则行数不为零。如果没有的话则行数为零。
98 //{
99 // flag = true;
100 //}
101 #endregion
102
103 if (sq.ExecuteQuery(sql).Rows.Count > 0)//dt.Rows.Count 这个方法是检查返回的虚拟表中是不是有数据,如果有的话则行数不为零。如果没有的话则行数为零。
104 {
105 flag = true;
106 }
107
108 return flag;
109 }
110 }
111 }

简单的web三层架构系统【第一版】的更多相关文章

  1. 简单的web三层架构系统【第二版】

    昨天写了 web三层架构的第一版,准确的说是三层架构的前期,顶多算是个二层架构,要慢慢完善. 第一版里,程序虽说能运行起来,但是有一个缺陷,就是里面的SQL语句,是使用的拼接字符进行执行.这样安全系数 ...

  2. 简单的web三层架构系统【第三版】

    今天是第三版,和前几天一样今天还是要对代码进行优化,三层架构是一种思想,具体能不能使得整个系统安全和高性能,还是要看代码编写的是否合理,逻辑性是否严谨. 昨天偶然间看到别人写的三层架构中,竟然没有在方 ...

  3. 简单的web三层架构系统【第五版】

    接上一版,今天差不多就是三层架构后台代码的完结了,这一版写完,接下来就是前台的制作了,前台不太熟悉,还在深入学习.过一段时间在写,今天先把后台代码写完. 三层架构包括DAL层, BLL层, UI层(也 ...

  4. 简单的web三层架构系统【第四版】

    上一次写了第三版, 因为之前无意之间看到一段视频,说是把系统中所有的SQL语句都做成存储过程.可以在很大程度上优化系统的SQL执行速度.所以百度了一下细节问题,之后我把所有的SQL语句,都做成了存储过 ...

  5. 关于WEB三层架构的思考

    1.MVC设计思想 MVC程序设计思想是眼下比較流行的WEB开发的模式,当中,M(model)是模型.即JavaBean,用来封装和保存数据:V(view)是视图,即JSP.用来显示内容:C(cont ...

  6. WEB三层架构与MVC

    web三层架构是指: >用户接口层(UI Layer) >业务逻辑层(Bussiness Layer) >持久化层 关于业务逻辑和用户接口 在早期的web开发中,因为业务比较简单,并 ...

  7. Django——WEB三层架构与MVC

    而我发此文的目的有二:一者,让初学者能够听到一家之言,是为解惑:二者,更希望抛砖引玉,得到专家的批判. 许多学生经常问我,MVC到底和WEB三层架构有啥关系? 开始时,我也只能给他们一些模糊的回答.时 ...

  8. 使用Servlet和JSP实现一个简单的Web聊天室系统

    1 问题描述                                                利用Java EE相关技术实现一个简单的Web聊天室系统,具体要求如下. (1)编写一个登录 ...

  9. 使用Java编写一个简单的Web的监控系统cpu利用率,cpu温度,总内存大小

    原文:http://www.jb51.net/article/75002.htm 这篇文章主要介绍了使用Java编写一个简单的Web的监控系统的例子,并且将重要信息转为XML通过网页前端显示,非常之实 ...

随机推荐

  1. 基本数据结构简介--ath9k网卡驱动开发总结(二)

    ath9k驱动代码主要数据结构概览. (1)在ath9k的驱动中,几乎是最顶层的数据结构是ath_softc,这个数据结构几乎随处可见.ath_softc是硬件与MAC层进行交互的中间载体,很多有用的 ...

  2. 将Python代码嵌入C++程序进行编写

    将Python代码嵌入C++程序进行编写的实例,python嵌入 把python嵌入的C++里面需要做一些步骤 安装python程序,这样才能使用python的头文件和库 在我们写的源文件中增加“Py ...

  3. 运用JavaScript构建你的第一个Metro式应用程序(onWindows 8)(三)

    原文 http://blog.csdn.net/zhangxin09/article/details/6793593 这是<运用 JavaScript构建你的第一个Metro式应用程序>系 ...

  4. uestc 10 In Galgame We Trust

    题意:求最长的合法括号序列 解:栈+分类讨论 now表示已经算出的序列,且此序列与现在扫描的序列可能能够连接,tmp表示现在扫描到的序列长度 左括号入栈 右括号:1.栈空时:统计当前总长 并且将栈,n ...

  5. [LeetCode][Python]Regular Expression Matching

    # -*- coding: utf8 -*-'''https://oj.leetcode.com/problems/regular-expression-matching/ Implement reg ...

  6. 面向对象程序设计-C++_课时28静态对象_课时29静态成员

    Static in C++ Two basic meanings Static Storage --allocated once at a fixed address Visibility of a ...

  7. struts漏洞修补过程之S2-016

    Struts漏洞修补过程之S2-016.邪恶的Struts再次现身,这一次是远程执行漏洞.官方建议立即升级到2.3.15.1.真希望这是最后一次漏洞修补.下面是升级步骤. 1.升级到struts2.3 ...

  8. NYOJ-252 01串

    01串 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描写叙述 ACM的zyc在研究01串,他知道某一01串的长度,但他想知道不含有"11"子串的这样的长 ...

  9. JDBC Connection Reset问题分析

    2014年7月13日 半年前開始.项目组測试MM在验证功能时.常常报怨讲測试环境上的应用在启动时非常慢,偶尔会报失败,遇到类似问题多数情况下又一次启动一次就能够启动成功,但少数时候也有重复启动不成功的 ...

  10. Objective-C基础笔记(2)@property和@synthesize

    先贴出使用@property和@synthesize实现的上一篇中的代码,再解释这两个keyword的使用方法和含义,代码例如以下: Person.h文件 #import <Foundation ...