ADO.NET(查询、属性扩展)
一、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(查询、属性扩展)的更多相关文章
- ADO.NET 【属性扩展】性别、年龄、编号
1.性别属性扩展 private bool _Sex; //成员变量 public bool Sex // 属性 { get { return _Sex; } set { _Sex = value; ...
- ADO.NET 数据访问类查询、属性扩展
今天,我首先在之前所做的人员管理系统的基础上,利用数据访问类进行了所有人员信息的查询. 主程序代码: List<Users> Ulist = new UsersData().Select( ...
- C#-WebForm-LinQ(一)-LinQ:语言集成查询(Language Integrated Query)-增删改查、属性扩展
LinQ-语言集成查询(Language Integrated Query) 高集成化的数据库访问技术 LINQ 2 SQL 实际是将数据库的表映射成程序中的类 会把数据库的表名原封不动的变成类名 数 ...
- linq组合查询时属性扩展问题
学习linq的过程中,做一个表格的条件查询并且分页显示.显示的出的数据需要经过属性拓展来实现将需要给用户看的值显示出来. 后台绑定数据时用的是上下文---- if(!ispostback){ usin ...
- ADO.Net属性扩展
属性扩展 大体意思:有外键关系时将代号化信息处理成原始文字 如:Info表中的民族列显示的是民族代号处理成Nation表中的民族名称 需要在Info类里面扩展一个显示nation名称的属性 using ...
- 使用ADO.NET查询和访问数据库
使用ADO.NET查询和访问数据库步骤 使用ADO.NET查询和访问数据库 连接数据库操作: 1. 定义连接字符串: String connString = "Data Sour ...
- YbSoftwareFactory 代码生成插件【十九】:实体类配合数据库表字段进行属性扩展的小技巧
实体类通常需要和数据库表进行了ORM映射,当你需要添加新的属性时,往往同时也需要在数据库中添加相应的字段并配置好映射关系,同时可能还需对数据访问组件进行重新编译和部署才能有效.而当你开始设计一个通用数 ...
- php查询文件扩展名
//查询文件扩展名 function extension($str){ $str = implode("",explode("\\",$str)); $str ...
- grootJs属性扩展 groot.bindExtend
index12.html <html><head> <title>grootJs属性扩展 groot.bindExtend</title> <sc ...
随机推荐
- spark新能优化之数据本地化
数据本地化的背景: 数据本地化对于Spark Job性能有着巨大的影响.如果数据以及要计算它的代码是在一起的,那么性能当然会非常高.但是,如果数据和计算它的代码是分开的,那么其中之一必须到另外一方的机 ...
- tomcat的配置详解:[1]tomcat绑定域名
转自:http://jingyan.baidu.com/article/7e440953dc096e2fc0e2ef1a.html tomcat的配置详解:[1]tomcat绑定域名分步阅读 在jav ...
- 【NOIP2013】【P1441】花匠
又一次看错题…… 原题: 花匠栋栋种了一排花,每株花都有自己的高度.花儿越长越大,也越来越挤.栋栋决定把这排中的一部分花移走,将剩下的留在原地,使得剩下的花能有空间长大,同时,栋栋希望剩下的花排列得比 ...
- kuangbin_MST A (POJ 1251)
模板题 Kruskal直接过 调试时候居然在sort(edge + 1, edge + 1 + m)上浪费好多时间... 不过本着ACMer的心态自然要测试一下两种方法分别的速度 Kruskal : ...
- php mcrypt 完全安装
今天安装完 PHP ,访问某个功能时, /var/log/httpd/error_log 中报如下错误: PHP Fatal error: Call to undefined function ...
- 高效能团队协作的JIRA实践
http://www.csdn.net/article/2015-05-21/2824739?utm_source=tuicool 高效能团队是企业生存和发展的基石.任何企业面对当下的激烈竞争,要想脱 ...
- 【java】serialVersionUID作用
serialVersionUID适用于Java的序列化机制.简单来说,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的.在进行反序列化时,JVM会把传来的字节流中的 ...
- 【mysql】mysql分表和表分区详解
为什么要分表和分区? 日常开发中我们经常会遇到大表的情况,所谓的大表是指存储了百万级乃至千万级条记录的表.这样的表过于庞大,导致数据库在查询和插入的时候耗时太长,性能低下,如果涉及联合查询的情况,性能 ...
- WCF学习心得----(五)生成客户端
WCF学习心得----(五)生成客户端 1. 通过Svcutil.exe工具直接生成客户端 1.1 将服务承载于IIS上 1.1.1 在IIS中新建网站,所示效果如下图: 1.1.2 ...
- php生成二维码可以有以下几种方式
1.google开放api $urlToEncode="http://bbs.lewanchina.com"; generateQRfromGoogle($urlToEncode) ...