啥也不说,看代码。

--SQl中
--建立ren的数据库,插入一条信息
create database ren
go
use ren
go
create table xinxi
(
code nvarchar(20) primary key,--编号
name nvarchar(20)--名字
)
insert into xinxi values('','zhangsan')

1、建立实体类:

实体类:封装
封装一个类,类名与数据库表名一致
成员变量名与列名一致,多一个下划线
成员变量封装完的属性,就会与数据表中的列名一致

每一行数据都可以存成一个对象,操作这个对象,就相当于对某一行数据进行整体操作

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleApplication71.App_Code
{
public class xinxi
{
private string _code;
public string code
{
get { return _code; }
set { _code = value; }
}
private string _name;
public string name
{
get { return _name; }
set { _name = value; }
}
}
}

2、建立数据访问类:

就是将对数据库的一些操作,单独写到一个类中,封成一些方法,等待调用。

结构看起来会非常清晰。

就像html中的CSS样式表和javascript的关系

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient; namespace ConsoleApplication71.App_Code
{ public class xinxidata
{
SqlConnection cnn = null;
SqlCommand cmd = null; public xinxidata()
{
cnn = new SqlConnection("server=.;database=ren;user=sa;pwd=123");
cmd = cnn.CreateCommand();
} /// <summary>
/// 增加
/// </summary>
/// <param name="x">信息对象</param>
public void insert(xinxi x)
{ cmd.CommandText = "insert into xinxi values(@a,@b)";
cmd.Parameters.Clear();
cmd.Parameters.Add("@a",x.code);
cmd.Parameters.Add("@b",x.name);
cnn.Open();
cmd.ExecuteNonQuery();
cnn.Close();
} //查询
public xinxi chaxun(string code)
{
xinxi xin = null;
cmd.CommandText = "select * from xinxi where code=@code";
cmd.Parameters.Clear();
cmd.Parameters.Add("@code",code);
cnn.Open();
SqlDataReader ss = cmd.ExecuteReader();
if (ss.HasRows)//判断有没有
{
xin = new xinxi();
ss.Read();
xin.code=ss["code"].ToString();
xin.name=ss["name"].ToString();
}
cnn.Close();
return xin;
} /// <summary>
/// 删除
/// </summary>
/// <param name="name"></param>
public bool delete(string code)
{
bool b = false;
cmd.CommandText = "delete from xinxi where code=@code";
cmd.Parameters.Clear();
cmd.Parameters.Add("@code",code);
cnn.Open();
try//看看有没有出错,即删没删成功
{
cmd.ExecuteNonQuery();
b=true;
}
catch
{
b=false;
}
cnn.Close();
return b;
}
public void quanbu()//查询全部信息
{
cmd.CommandText = "select * from xinxi";
cnn.Open();
SqlDataReader ss = cmd.ExecuteReader();
while (ss.Read())
{
Console.WriteLine(ss[]+" "+ss[]);
}
cnn.Close();
}
public bool update(string code,string name)
{
bool b = false;
cmd.CommandText = "update xinxi set name=@name where code=@code";
cmd.Parameters.Clear();
cmd.Parameters.Add("@name",name);
cmd.Parameters.Add("@code",code);
cnn.Open();
try
{
cmd.ExecuteNonQuery();
b = true;
}
catch { }
cnn.Close();
return b;
}
}
}

3,在main函数里面,增删改查

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ConsoleApplication71.App_Code; namespace ConsoleApplication71
{
class Program
{
static void Main(string[] args)
{
xinxidata sj = new xinxidata();//实例化
#region 添加
//xinxi xin = new xinxi();
//Console.Write("请输入添加的编号:");
//xin.code = Console.ReadLine();
//Console.Write("请输入添加的名字:");
//xin.name = Console.ReadLine();
//sj.insert(xin);
#endregion #region 删除
//Console.Write("请输入被删除编号");
//string code = Console.ReadLine();
//if (sj.chaxun(code) != null)//判断是否有这个编号
//{
// bool T= sj.delete(code);
// if (T == true)//如果删除成功
// {
// Console.WriteLine("删除成功");
// }
// else
// {
// Console.WriteLine("删除不成功");
// }
//}
//else
//{
// Console.WriteLine("输入有误!!");
//}
#endregion
#region 查询全部信息
//sj.quanbu();
#endregion #region 修改
Console.Write("请输入要修改的编号:");
string code = Console.ReadLine();
if (sj.chaxun(code) != null)
{
Console.Write("请输入要修改的名字:");
string name = Console.ReadLine();
bool M= sj.update(code,name);
if (M == true)
{
Console.WriteLine("修改成功!");
}
else
{
Console.WriteLine("删除不成功");
} }
else
{
Console.WriteLine("输入有误,不存在此编号!!");
}
#endregion
Console.ReadLine();
} }
}

完!!

ADO,NET 实体类 和 数据访问类的更多相关文章

  1. ado.net 实体类_数据访问类

    实体类: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ...

  2. ADO.NET(完整修改和查询、实体类,数据访问类)

    一.完整修改和查询 在编写c#语句时需考虑到用户体验,例如在编写修改语句时,需要考虑到输入的内容在数据库中是否能够找到. 中间变量运用. 1.先查 2.执行操作 完整修改语句: bool has = ...

  3. 9_13学习完整修改和查询&&实体类,数据访问类

    完整修改和查询:中间变量运用. 1.先查 2.执行操作 ---------------------------------------------------- namespace ADO.NET_小 ...

  4. C#-ade.net-实体类、数据访问类

    实体类.数据访问类 是由封装演变而来,使对数据的访问更便捷,使用时只需要调用即可,无需再次编写代码 实体类是按照数据库表的结构封装起来的一个类 首先,新建文件夹 App_Code ,用于存放数据库类等 ...

  5. ADO.net 实体类 、数据访问类

    程序分三层:界面层.业务逻辑层.数据访问层 比较规范的写程序方法,要把业务逻辑层和数据访问层分开,此时需要创建实体类和数据访问类 实体类: 例 using System; using System.C ...

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

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

  7. 【2017-04-20】Sql字符串注入式攻击与防御,实体类,数据访问类

    字符串攻击 所谓sql字符串注入式攻击就是在用户输入界面输入通过精心编制的含有某种指令的字符串,来改变C#中连接数据库要执行的sql语句,从而对数据库进行攻击性操作 在用户输入界面输入  a');up ...

  8. ADO.NET 【实体类】【数据访问类】

    认识分层结构,分层式结构是最常见,也是最重要的一种结构. 三层架构(3-tier architecture) 界面层(User Interface layer) 主要对用户的请求接受,以及数据的返回, ...

  9. ADO.NET(一) 空间 ADO.NET结构 命名空间(车延禄) System.Data—— 所有的一般数据访问类 S(转载)

    ADO.NET(一) 空间   ADO.NET结构 命名空间(车延禄)System.Data—— 所有的一般数据访问类System.Data.Common—— 各个数据提供程序共享(或重写)的类Sys ...

随机推荐

  1. HDU 4513 吉哥系列故事——完美队形II(Manacher)

    Problem Description 吉哥又想出了一个新的完美队形游戏! 假设有n个人按顺序站在他的面前,他们的身高分别是h[1], h[2] ... h[n],吉哥希望从中挑出一些人,让这些人形成 ...

  2. 使用 GitHub / GitLab 的 Webhooks 进行网站自动化部署

    老早就想写这个话题了,今天正好有机会研究了一下 git 的自动化部署.最终做到的效果就是,每当有新的 commit push 到 master 分支的时候,就自动在测试/生产服务器上进行 git pu ...

  3. nginx、fastCGI、php-fpm关系梳理(转载 http://blog.sina.com.cn/s/blog_6df9fbe30102v57y.html)

        前言: Linux下搭建nginx+php+memached(LPMN)的时候,nginx.conf中配需要配置fastCGI,php需要安装 php-fpm扩展并启动php-fpm守护进程, ...

  4. drds 分库表的创建速记

    关键词 :dbpartition by hash(`INVESTOR_APPLY_ID`) 格式 :dbpartition by hash(分库字段) 创建例子: CREATE TABLE `BB_J ...

  5. oracle表分区

    注:新建分区表前要先准备好要用的表空间 一. oracle分区类型: 范围分区(Range分区) 列表分区(List分区) 散列分区(Hash分区) 组合分区(Composite Partitioni ...

  6. DOM4J解析xml案例

  7. iOS的第一个习作

    首发:个人博客,更新&纠错&回复 代码在这里,对git还是使用不熟练,好在github新建项目后体贴地提示是不是要执行这样两句—— 这两句我肯定是背不住的,所以记一下. git rem ...

  8. Loadrunner教程读后感-VuGen

    一.loadrunner协议分析 协议确定方法 二.提交表单函数的区别 (1)web_sumit_form() (2)web_sumit_data() 三.web_url和web_link 四.VuG ...

  9. struts2 笔记02 文件上传、文件下载、类型转换器、国际化的支持

    Struts2的上传 1. Struts2默认采用了apache commons-fileupload  2. Struts2支持三种类型的上传组件 3. 需要引入commons-fileupload ...

  10. gerrit-git

    解释为什么gerrit中的push是需要用refs/for/master http://stackoverflow.com/questions/10461214/why-is-git-push-ger ...