一、ADO.NET 融合面向对象的查询语句

1.只查询一条数据

//数据访问中的select方法
public stu select(string xuehao)
{
stu s = null;
cmd.CommandText = "select *from stu where xuehao=@a";
cmd.Parameters.Clear();
cmd.Parameters.Add("@a", xuehao);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if(dr.HasRows)
{
dr.Read();
s = new stu();
s.Xuehao=dr["xuehao"].ToString();
s.Name=dr["name"].ToString();
s.Banji = dr["banji"].ToString();
s.Sex = Convert.ToBoolean(dr["sex"]);
s.Bir = Convert.ToDateTime(dr["bir"]);
}
conn.Close();
return s; }
C#代码:
Console.Write("请输入要查询的学号:");
string ss= Console.ReadLine();
Console.WriteLine("学号" + "\t" + "姓名" + "\t" + "性别" + "\t" + "班级" + "\t" + "生日");
stu a = sdata.select(ss);
if(a!=null)
{
Console.WriteLine(a.Xuehao+"\t"+a.Name+"\t"+((a.Sex)?:)+"\t"+a.Banji+"\t"+a.Bir.ToString("yyyy-MM-dd"));
}

2.查询所有语句

 数据访问中的代码:
public List<stu> Select()
{ //泛型集合,放置所有stu数据对象
List<stu> list = new List<stu>(); cmd.CommandText = "select *from stu";//查询语句
conn.Open();//打开数据库
SqlDataReader dr = cmd.ExecuteReader();//调用此方法用来查询
if(dr.HasRows)//如果数据表中有数据
{
while(dr.Read())//循环读取全部数据
{//每读取一行数据,就制作一个stus对象
stu s = new stu();
s.Xuehao = dr["xuehao"].ToString();
s.Name = dr["name"].ToString();
s.Banji = dr["banji"].ToString();
s.Sex = Convert.ToBoolean(dr["sex"]);
s.Bir = Convert.ToDateTime(dr["bir"]);
//注意,在循环中,将制作好的每一个对象,都放到集合中去
list.Add(s);
}
}
conn.Close();//关闭数据库
return list;
}
C#代码部分:
List<stu> ulist = new studata().Select();
if(ulist.Count>)
{
foreach(stu s in ulist)//遍历
{
Console.WriteLine(s.Xuehao + "\t" + s.Name + "\t" + ((s.Sex) ? : ) + "\t" + s.Banji + "\t" +s.Bir.ToString("yyyy-MM-dd"));
}
}
Console.ReadLine();

二、小知识

1、程序的运行顺序和机制
卡断点
可以很好的处理程序中未知的BUG
并且可以很准确的找到BUG的位置

2、函数的抽象性
函数功能写的越少,那么这个函数能被应用的地方就越多

三、属性扩展**

处理:有外键关系时将代号化信息处理成原始文字,让用户可看懂的(粗略解释)

如:将性别返回的值true或false改为男或女

1.直接在实体类(如stu)中_sex私有变量再新建一个成员变量:

public string sexstr
{
get{return (_sex?"男":"女")}
}

2、

将Console.WriteLine(s.Xuehao + "\t" + s.Name + "\t" + ((s.Sex) ? 1 : 0) + "\t" + s.Banji + "\t" +s.Bir.ToString("yyyy-MM-dd"));中的
((s.Sex) ? 1 : 0) 改为s.sexstr.
将表中的Users民族列显示的是民族代号处理成Nation表中的民族名称
  需要在Users类里面扩展一个显示Nation名称的属性 Nation表在C#新建Nation实体类和Nationdata数据访问类
Nationdata类新建一个查询方法:
 public string Select(string code)
{
string end = "<无>"; cmd.CommandText = "select *from Nation where NationCode=@a";
cmd.Parameters.Clear();
cmd.Parameters.Add("@a", code); conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
dr.Read();
end = dr["NationName"].ToString();
} conn.Close();
return end;
}

再在Users内_Nation新建一个成员变量

 public string NationName//扩展的名族名称属性
{
get
{
NationData Ndata = new NationData();
string end = Ndata.Select(_Nation);
return end;
}
}

ADO.NET(查询、属性扩展)的更多相关文章

  1. ADO.NET 【属性扩展】性别、年龄、编号

    1.性别属性扩展 private bool _Sex; //成员变量 public bool Sex // 属性 { get { return _Sex; } set { _Sex = value; ...

  2. ADO.NET 数据访问类查询、属性扩展

    今天,我首先在之前所做的人员管理系统的基础上,利用数据访问类进行了所有人员信息的查询. 主程序代码: List<Users> Ulist = new UsersData().Select( ...

  3. C#-WebForm-LinQ(一)-LinQ:语言集成查询(Language Integrated Query)-增删改查、属性扩展

    LinQ-语言集成查询(Language Integrated Query) 高集成化的数据库访问技术 LINQ 2 SQL 实际是将数据库的表映射成程序中的类 会把数据库的表名原封不动的变成类名 数 ...

  4. linq组合查询时属性扩展问题

    学习linq的过程中,做一个表格的条件查询并且分页显示.显示的出的数据需要经过属性拓展来实现将需要给用户看的值显示出来. 后台绑定数据时用的是上下文---- if(!ispostback){ usin ...

  5. ADO.Net属性扩展

    属性扩展 大体意思:有外键关系时将代号化信息处理成原始文字 如:Info表中的民族列显示的是民族代号处理成Nation表中的民族名称 需要在Info类里面扩展一个显示nation名称的属性 using ...

  6. 使用ADO.NET查询和访问数据库

    使用ADO.NET查询和访问数据库步骤 使用ADO.NET查询和访问数据库 连接数据库操作: 1.       定义连接字符串: String connString = "Data Sour ...

  7. YbSoftwareFactory 代码生成插件【十九】:实体类配合数据库表字段进行属性扩展的小技巧

    实体类通常需要和数据库表进行了ORM映射,当你需要添加新的属性时,往往同时也需要在数据库中添加相应的字段并配置好映射关系,同时可能还需对数据访问组件进行重新编译和部署才能有效.而当你开始设计一个通用数 ...

  8. php查询文件扩展名

    //查询文件扩展名 function extension($str){ $str = implode("",explode("\\",$str)); $str ...

  9. grootJs属性扩展 groot.bindExtend

    index12.html <html><head> <title>grootJs属性扩展 groot.bindExtend</title> <sc ...

随机推荐

  1. Python-正则零宽断言及命名捕获(类PHP)

    (一)零宽断言 说明:本文的例子使用python描述      首先说明一下什么是零宽断言,所谓零宽断言就是并不去真正的匹配字符串文本,而仅仅是匹配对应的位置.      正则表达式中有很多这样的断言 ...

  2. vb6异步ADO操作

    Private withevents M_Conn as adodb.connection Private CmdFinished as boolean sub somesub AdoCmd.Exec ...

  3. Entity Framework 6新特性:全局性地自定义Code First约定

    2012年12月11日,Entity Framework已经发布了Entity Framework 6 Alpha2,因项目需要,目前已使用了其中的两个特性,今天就来介绍一下第一个特性:全局性地自定义 ...

  4. Consul

    1. 什么是consul? 是一个服务管理软件. 支持多数据中心下,分布式高可用的,服务发现和配置共享. consul支持健康检查,允许存储键值对. 一致性协议采用 Raft 算法,用来保证服务的高可 ...

  5. officetohtml

    http://blog.csdn.net/mcpang/article/details/6817643

  6. Java自带工具jstack故障分析的一个案例

    公司的一个web应用项目运行了很长一段时间,达半年之久,前段时间突然出现了服务不可用的情况,所有的请求都不可达,服务彻底挂了.查看tomcat进程还在,cpu使用率低,一时没找着问题,重启了服务.过了 ...

  7. 安装Android sdk 4.4(19)出现问题的解决方案

    刚更新了Android sdk 19,但是出现以下两个问题,浪费我2个小时的时间,现在将我遇到的问题和解决方法总结如下: 问题1:打开eclipse点更新后,出现This Android SDK re ...

  8. Jenkins: 基础篇(环境配置)

    自动化领域比较有影响力的开源框架jenkins,确实比较强大,易用.很多公司将其用来做持续即成CI(continuous integration).为了拓展和强化自己的软件设计生态系统,也将很久前使用 ...

  9. Angular学习(7)- 模板2

    示例: <!DOCTYPE html> <html ng-app="MyApp"> <head> <title>Study 8< ...

  10. OpenSSL 双向认证

    在使用OpenSSL进行SSL双向认证时,需要在服务器和客户端配置如下接口函数: SSL_CTX_set_verify(SSL_CTX* ctx,int mode,int (*verify_callb ...