软件开发的三层:界面层,业务逻辑层,数据访问层;

数据访问层:项目添加App_Code文件夹;

实体类:根据数据库表结构,类名和数据库表名一致;

每个成员变量要与数据库表的列相对应,对象正好可以列为一行数据,封装起来;

一个实体类做一个类;

访问权限是public的

数据访问类:起名UsersData;

访问权限是public的

实体类和数据访问类统称为数据访问层,每个表对应一个数据访问层;

新建一个连接字符串的静态的类:

访问权限是public的,必须有一个静态的成员变量,然后封装;

连接字符串:成员变量 = "server =.; Database =Data0908; user =sa; pwd =123;";

在数据访问操作的方法:在数据访问类的构造函数内,可以直接用连接字符串的类名点出来;

在构造函数内可以直接连接数据库:

SqlConnection conn = new SqlConnection();

SqlCommend comm = conn.CreateCommand();

*****写法:

由于构造函数的约束性,可以提升数据库连接类和数据库操作类的作用域:

private SqlConnection conn;

private SqlCommend comm;

public UsersData

{

  conn = new SqlConnection(连接字符串的类名.连接字符串的成员变量);

  comm = conn.CreateCommand;

}

//返回表中的所有数据

public List <Users> selectAll()

{

  List <Users> us = new List<Users>();     //新建一个泛型集合

  comm.CommandText = "select * from Users";

  conn.Open();

  SqlDataReader dr = comm.ExeuteReader();

  

  return us;

}

  

while(dr.Read())    //如果dr.Read是true进循环;

{

  Users u = new Users;

  u.Ids = Convert.ToInt32(dr[Ids]);

  u.UserName = dr[UserName].ToString();

  u.password = dr[password].ToString();

  u.NickName = dr[NickName].ToString();

  u.Sex = Convert.ToBoolean(dr[Sex]);

  u.Birthday = Convert.ToDateTime(dr[Birthday]);

  u.NationCold = dr[NationCold].ToString();

  us.Add(u);

}

  conn.Close();

  return us;

}

foreach(Users u in ulist)

{

  Console.WriteLine(u.Ids+" | "+u.password);

}

添加

public bool UsersTianJia(users u)

{

  bool result = false;    //默认结果false;

  cmd.CommandText = "insert into Users values(@a,@b,@c,@d,@e,@f)";
  cmd.Parameters.Clear();
  cmd.Parameters.AddWithValue("@a", u.UserName);
  cmd.Parameters.AddWithValue("@b", u.PassWord);
  cmd.Parameters.AddWithValue("@c", u.NickName);
  cmd.Parameters.AddWithValue("@d", u.Sex);
  cmd.Parameters.AddWithValue("@e", u.Birthday);
  cmd.Parameters.AddWithValue("@f", u.NationCode);

  conn.Open();

  int a = comm.ExcuteNonQuery();

  conn.Close();

  if(a>0)

    result = true;

  return result;

}

Users user = new Users();

Console.WriteLine("请输入用户名");

user.UserName = Console.ReadLine();

C# ADO.NET与面向对象的更多相关文章

  1. 【2017-04-20】Ado.Net与面向对象结合架构中的数据访问层(实体类,数据访问类)

    开发项目三层架构:界面层.业务逻辑层.数据访问层 今天学习一下数据访问层,分为实体类和数据访问类 所有的类放在App_Code这个文件夹下边.养成一个好的习惯. 一.实体类 数据库中的表映射为一个类, ...

  2. C# ADO.NET 面向对象

    ADO.NET跟面向对象的结合 把面向对象跟数据库连接用 在项目里面创建一个新的文件夹   名字为App_Code 在这个App_Code里面创建几个类 主要为拆分问题,标上序号,先干什么在干什么 实 ...

  3. ADO.NET(查询、属性扩展)

    一.ADO.NET 融合面向对象的查询语句 1.只查询一条数据 //数据访问中的select方法 public stu select(string xuehao) { stu s = null; cm ...

  4. C# ADO.NET面向对象想法

    我认为的面向对象就是把各种问题拆分开来 逐一解决,  我想的是先是数据库,到底有什么, 然后新建一个类,类里面先是private的私有的,但是可以有无数个可以连接private的pubilc的属性 可 ...

  5. ado.net 面向对象

    面向对象:就是一个大的转换器,建立起一条通道通往数据库然后通过通道将所需(方法)数据从转换器往返于外部界面端 1   首先在项目里创建文件夹:      右击项目———添加个文件夹App_Cod 2 ...

  6. .NET基础拾遗(2)面向对象的实现和异常的处理基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...

  7. .NET基础拾遗(6)ADO.NET与数据库开发基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开发基 ...

  8. ADO.NET Entity Framework 在哪些场景下使用?

    在知乎回答了下,顺手转回来. Enity Framework已经是.NET下最主要的ORM了.而ORM从一个Mapping的概念开始,到现在已经得到了一定的升华,特别是EF等对ORM框架面向对象能力的 ...

  9. Entity Framework 与 面向对象

    说要分享,我了个*,写了一半放草稿箱了两个星期都快发霉了,趁着周末写完发出来吧. 文章分为五部分: 基础.类讲述的是用到的一些EF与面向对象的基础: 业务是讲怎么划分设计业务: 设计模式和工作模式讲述 ...

随机推荐

  1. Python_试题_23

    # Python基础数据类型考试题# 考试时间:两个半小时 满分100分(80分以上包含80分及格)# 一,基础题.# 1,简述变量命名规范(3分)# 答:变量名是由数字.字母.下划线任意组合,变量名 ...

  2. Segment Occurrences(string find函数)

    Description You are given two strings s and t, both consisting only of lowercase Latin letters.The s ...

  3. [2019BUAA软件工程]结对编程感想

    结对编程感想 写在前面   本博客为笔者在完成软件工程结对编程任务后对于编程过程.最终得分的一些感想与经验分享.此外笔者还对于本课程的结对编程部分提出了一些建议. Tips Link 作业要求博客 2 ...

  4. Linux内核分析第六周总结

    进程控制块PCB--task_struct 操作系统的内核里的三大功能: 进程管理 内存管理 文件系统 进程描述符--task_struct 进程管理是最核心的内容 然而Linux进程的状态与操作系统 ...

  5. Opentsdb 启动显示配置文件不存在

    今天 重新启动opentsdb  出现本地配置文件不存在   这不知道  我查了一下官网 了解到 You can use the --config command line argument to s ...

  6. 20150409作业3 阅读《构建之法》1-5章 (Update:2015-04-16

    以下是我看<构建之法>1-5章列出来的知识点和一些自己对部分知识的理解以及一些吐槽...和感受 1.1 软件 = 程序 + 软件工程 (软件工程 = 软件 - 程序(我知道软件是什么,也知 ...

  7. 必应语音API(Bing text to speech API)

    前言 Link : Microsoft Speech API overview 通过这个链接,大致了解Bing speech API的语音识别和语音合成两部分, 这次是需要用到TTS,所以就直接看TT ...

  8. ubuntu编译安装php7遇到的问题及解决方案

    configure: error: Cannot find OpenSSL's <evp.h> 这个可以在configure的时候,指定openssl的路径,查看openssl的安装路径: ...

  9. HTML的input类型为hidden导致无法reset改字段的value问题

    问题关键:根据HTML规范,hidden是非ui类元素,不接受用户处理.所以form的 reset并不影响它. http://stackoverflow.com/questions/6367793/w ...

  10. 在做销售录入界面时,如何使用dbgrid?(50分)

    给你段源码看一看用stringgird做得: procedure Tfrmingoods.adddata ; var i:integer; begin do begin ,i])=trim(goods ...