题目:

第一部分:

新建一个数据库:ADO测试,包含下面两个数据表,使用代码创建,并保留创建的代码文本。

专业表Subject:

专业编号(SubjectCode):nvarchar类型,不能为空,主键

专业名称(SubjectName):nvarchar类型,不能为空

学生表Student:

编号(Code):nvarchar类型,不能为空,主键

姓名(Name):nvarchar类型,不能为空

性别(Sex):bit类型,不能为空,true为男,false为女

生日(Birthday):datetime类型,不能为空

专业编号(SubjectCode):nvarchar类型,专业表的外键

第二部分:

新建一个控制台应用程序:

一、数据显示:

将Student表数据查询显示,显示格式为:

编号   姓名   性别   年龄         生日            专业

001   张三    男     22   1994年1月12日     商务英语

……

……

性别显示为男/女(true为男,false为女),自动计算出年龄,生日显示为“XXXX年XX月XX日”,专业显示专业编号对应的专业名称。

二、功能操作:

在上面的基础上增加功能,表数据显示完毕后,提示用户可以继续操作:

“请输入您要继续的操作(输入数字1为新增,输入数字2为修改,输入数字3为删除):”,输入其它内容提示输入有误,并回到上面继续等待用户操作。

三、新增:

当用户输入1并回车后,按照顺序让用户分别输入:学生编号,学生姓名,性别,生日,专业等内容,格式为:

请输入学生编号:

请输入学生姓名(不能为空):

请输入学生性别(男/女):

请输入学生生日(如:2000/12/12):

请输入专业:

每次输入都需要做以下判断,如果输入不正确,则提示输入有误,并让用户重新输入,当每一项输入正确后才可以继续下一项的输入;

1、学生编号不允许重复

2、学生姓名不能为空

3、性别只能输入男/女,并自动转换为true/false

4、生日格式是否是正确

5、专业需要用户输入中文,如:当用户输入“商务英语”,自动查到“Z001”专业编号,如果查不到则提示“没有此专业,请重新输入。”

当以上内容全部填写完毕并无误后,将此学生信息打印显示出来,并询问用户“以上为新增学生的信息,是否确定添加?(Y/N):”,当用户输入Y确定添加后,才进行添加,如果添加成功,则将控制台程序清空,并刷新显示最新的Student表数据,在底部提示”添加成功”,并继续回到“第2步”等待用户继续操作。

四、修改:

当用户输入2并回车时,提示用户输入需要更改的学生编号,如果有此学生,那么除学生编号外,其余的内容全部进行修改,格式为:

已查询到S001的学生信息,请进行以下修改:

S001学生当前姓名为:张三

请输入您的修改:

S001学生当前的性别为:男

请输入您的修改:

……

每次修改后都需要与新增时一样的判断,当全部内容都修改完毕后,将修改后的学生信息打印显示出来,并询问“以上为修改后的学生信息,是否确定修改?(Y/N):”,当用户输入Y并回车才真正确定修改,并提示修改是否成功,如果修改成功,则清空控制台内容,刷新显示最新的Student表数据,并提示修改成功,继续回到“二”等待用户继续操作。

五、删除:

当用户输入3并回车时,提示用户输入需要删除的学生编号,如果有此学生,那么将此学生的信息展示出来,并提示“是否要删除此学生的信息?(Y/N)”,当用户输入Y确定删除后,才进行删除,并提示删除是否成功,如果删除成功,则清空控制台内容,刷新显示最新的Student表数据,并提示删除成功,继续回到“二”等待用户继续操作。

数据库:

create database adocc--创建数据库,名为adocc
go
use adocc
go create table sub--专业表
(
subcode nvarchar(20) primary key,--专业编号,主键
subjectname nvarchar (20)--专业名称
)
insert into sub values('z001','商务英语')
insert into sub values('z002','软件工程')
insert into sub values('z003','旅游')
insert into sub values('z004','工商管理') create table student--学生表
(
code nvarchar(10) primary key,--学生编号,主键,为了确定唯一性
name nvarchar(20),--学生姓名
sex bit,--学生性别,bool类型,返回true或false
birthday datetime,--生日
subjectcode nvarchar(20)--专业编号,专业表的外键
)
insert into student values('s001','张三','true','1994-1-12','z001')
insert into student values('s002','李四','true','1995-2-22','z002')
insert into student values('s003','王五','true','1996-8-28','z003')
insert into student values('s004','小花','false','1997-3-6','z004')

控制台应用程序:

数据库模型类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
namespace ADO.Net测试.数据模型
{
public class student//数据库模型类,用来查询打印数据库表中信息使用泛型集合时,调用此类的方法添加集合项
{
private string _code; public string code
{
get { return _code; }
set { _code = value; }
}
private string _name; public string name
{
get { return _name; }
set { _name = value; }
}
private bool _sex; public bool sex
{
get { return _sex; }
set { _sex = value; }
}
public string ssex
{
get {return (bool)_sex?"男":"女"; }
} private DateTime _birthday; public DateTime birthday
{
get { return _birthday; }
set { _birthday = value; }
}
public string birth
{
get { return _birthday.ToString("yyyy年MM月dd日"); }//此处是将生日改为字符串显示
}
//获取当前时间,根据生日日期算出年龄
public int age
{
get { return DateTime.Now.Year -((DateTime)_birthday).Year; }
}
private string _subjectcode; public string subjectcode
{
get { return _subjectcode; }
set { _subjectcode = value; }
} public string subb //将课程编号换成课程名字显示,需要通过外键表中的编号在主键表中查出名字
{
get
{
string f = "";
SqlConnection conn = new SqlConnection("server=.;database=adocc;user=sa;pwd=123;");
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "select *from sub where subcode=@sub";
cmd.Parameters.Clear();
cmd.Parameters.Add("@sub", _subjectcode);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
while(dr.Read())
{
f = dr["subjectname"].ToString();
}
}
conn.Close();
return f;
}
}
}
}

数据库访问类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using ADO.Net测试.数据模型;//调用数据库模型类 namespace ADO.Net测试.数据库访问类
{
public class datastudent
{
SqlConnection conn = null;//数据库连接及操作
SqlCommand cmd = null; public datastudent()
{
conn = new SqlConnection("server=.;database=adocc;user=sa;pwd=123;");
cmd = conn.CreateCommand();
} //数据库表格进行查询打印,将所有数据放进泛型集合
public List<student> chaxun()
{
List<student> ls = new List<student>();
cmd.CommandText = "select * from student";
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
student st = new student();
st.code = dr["code"].ToString();
st.name = dr["name"].ToString();
st.sex = Convert.ToBoolean(dr["sex"]);
st.birthday = Convert.ToDateTime(dr["birthday"]);
st.subjectcode = dr["subjectcode"].ToString();
ls.Add(st);
}
}
conn.Close();
return ls;
} public void dayin()//进行遍历集合,打印
{
List<student> su = new datastudent().chaxun();
foreach (student dd in su)
{
Console.WriteLine(dd.code + "\t" + dd.name + "\t" + dd.ssex + "\t" + dd.age + "\t" + dd.birth + "\t" + dd.subb);
}
} /// <summary>
/// bool判断
/// </summary>
/// <param name="aa"></param>
/// <returns></returns>
public bool zengjia(string aa)//学生编号输入增加判断
{ cmd.CommandText = "select * from student where code=@code";
cmd.Parameters.Clear();
cmd.Parameters.Add("@code",aa);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
bool pd = false;
if (dr.HasRows)
{
pd = true;
}
conn.Close();
return pd;
}
/// <summary>
/// 执行数据库添加
/// </summary>
/// <param name="bh">编号</param>
/// <param name="na">名字</param>
/// <param name="xb">性别</param>
/// <param name="birth">生日</param>
/// <param name="zy">专业</param>
public void tj(string bh, string na, bool xb, DateTime birth, string zy)
{
cmd.CommandText = "insert into student values(@bh,@na,@xb,@birth,@zy)";
cmd.Parameters.Clear();
cmd.Parameters.Add("@bh",bh);
cmd.Parameters.Add("@na",na);
cmd.Parameters.Add("@xb",xb);
cmd.Parameters.Add("@birth",birth);
cmd.Parameters.Add("@zy",zy);
conn.Open();
cmd.ExecuteNonQuery(); conn.Close();
} public bool coxg(string bb) //数据库修改、删除编号判断
{
cmd.CommandText = "select * from student where code=@code";
cmd.Parameters.Clear();
cmd.Parameters.Add("@code", bb);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
bool pd = false;
if (dr.HasRows)
{
pd = true;
}
conn.Close();
return pd;
}
public string naxg(string cc) //数据库修改,姓名查询
{
cmd.CommandText = "select * from student where code=@code";
cmd.Parameters.Clear();
cmd.Parameters.Add("@code", cc);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
string mingzi = "";
if (dr.HasRows)
{
dr.Read();
mingzi = dr["name"].ToString();
}
conn.Close();
return mingzi;
} public string xbxg(string dd) //数据库修改,性别查询
{
cmd.CommandText = "select * from student where code=@code";
cmd.Parameters.Clear();
cmd.Parameters.Add("@code", dd);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
string xingbie = "";
if (dr.HasRows)
{
dr.Read();
xingbie = ((bool)dr["sex"]?"男":"女").ToString();
}
conn.Close();
return xingbie;
} public DateTime birxg(string dd) //数据库修改,生日查询
{
cmd.CommandText = "select * from student where code=@code";
cmd.Parameters.Clear();
cmd.Parameters.Add("@code", dd);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
DateTime shengri = new DateTime();
if (dr.HasRows)
{
dr.Read();
shengri = Convert.ToDateTime(dr["birthday"]);
}
conn.Close();
return shengri;
} public string zhuanye(string dd) //数据库修改,专业查询
{
cmd.CommandText = "select * from sub where subcode=(select subjectcode from student where code=@code)";
cmd.Parameters.Clear();
cmd.Parameters.Add("@code", dd);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
string ka = "";
if (dr.HasRows)
{
dr.Read();
ka = dr["subjectname"].ToString();
}
conn.Close();
return ka;
}
/// <summary>
/// 数据库执行修改
/// </summary>
/// <param name="bh">学号</param>
/// <param name="na">姓名</param>
/// <param name="xb">性别</param>
/// <param name="birth">生日</param>
/// <param name="zy">专业</param>
public void xg(string bh, string na, bool xb, DateTime birth, string zy)
{
cmd.CommandText = "update student set name=@name,sex=@sex,birthday=@birth,subjectcode=@sub where code=@code";
cmd.Parameters.Clear();
cmd.Parameters.Add("@code", bh);
cmd.Parameters.Add("@name", na);
cmd.Parameters.Add("@sex", xb);
cmd.Parameters.Add("@birth", birth);
cmd.Parameters.Add("@sub", zy);
conn.Open();
cmd.ExecuteNonQuery(); conn.Close();
} public List<student> scxs(string cs)//进行输入要删除的学生编号后,进行此学生信息显示
{
List<student> ls = new List<student>();
cmd.CommandText = "select * from student where code=@code";
cmd.Parameters.Clear();
cmd.Parameters.Add("@code",cs);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
dr.Read();
{
student st = new student();
st.code = dr["code"].ToString();
st.name = dr["name"].ToString();
st.sex = Convert.ToBoolean(dr["sex"]);
st.birthday = Convert.ToDateTime(dr["birthday"]);
st.subjectcode = dr["subjectcode"].ToString();
ls.Add(st);
}
}
conn.Close();
return ls;
} public void dy(string bb)//进行遍历集合,打印
{
string zx=bb;
List<student> su = new datastudent().scxs(zx);
foreach (student dd in su)
{
Console.WriteLine(dd.code + "\t" + dd.name + "\t" + dd.ssex + "\t" + dd.age + "\t" + dd.birth + "\t" + dd.subb);
}
} /// <summary>
/// 执行删除
/// </summary>
/// <param name="delete"></param>
public void sc(string delete)
{
cmd.CommandText = "delete from student where code=@code";
cmd.Parameters.Clear();
cmd.Parameters.Add("@code",delete);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
} }
}

program类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ADO.Net测试.数据库访问类;//引用类
using ADO.Net测试.数据模型;//引用类
using System.Data.SqlClient;//引用数据库
namespace ADO.Net测试
{
class Program
{
static void Main(string[] args)
{
datastudent table = new datastudent();//先实例化数据访问类
table.dayin();//调用里面的对象方法,这一步是显示数据库表的内容
for (; ; )//输入错误时循环回到顶部重新输入
{
Console.Write("请输入继续的操作指令(1.新增,2.修改,3.删除):");//根据指令输入自己的操作
string cz = Console.ReadLine();
if (cz == "" || cz == "" || cz == "")//如果输入的是正确的指令,将走下一步操作
{
if (cz == "")//同样是判断输入的正确才往下走
{
//输入完成打印的时候引用的数据库访问类里的方法,有参数,需要把变量定义在外面,以便返回参数
string bh = ""; string na = ""; string xb = ""; DateTime birth = new DateTime(); string zy = "";
for (; ; )//这个循环是在输入完成是否执行时使用,不执行返回重新输入
{
for (; ; )//此处是输入错误式返回重新输入
{ Console.Write("请输入新增学生编号:");
bh = Console.ReadLine();
bool pd = new datastudent().zengjia(bh);//实例化数据库访问类里面的方法
if (pd == false) { break; }
else { Console.WriteLine("已有此学号,请重新输入!"); }
}
for (; ; )//此处是输入错误式返回重新输入
{
Console.Write("请输入新增学生姓名:");
na = Console.ReadLine();
if (na != "") { break; }
else { Console.WriteLine("姓名不能为空,请重新输入!"); }
}
bool bl;//数据库中的性别是bool类型,需要定义bool变量,输入男女改为bool类型,以便数据库查询
for (; ; )
{
Console.Write("请输入学生性别:");
xb = Console.ReadLine();
if (xb == "男") { bl = true; break; }
else if (xb == "女") { bl = false; break; }
else { Console.WriteLine("您的输入有误,请重新输入!"); }
} for (; ; )
{
try
{
Console.Write("请输入学生生日:");//datetime类型,try一下输入是否有误
birth = Convert.ToDateTime(Console.ReadLine());
break;
}
catch
{
Console.WriteLine("输入有误,请重新输入!");
}
}
string ka = "";
for (; ; )
{
Console.Write("请输入学生专业:");
zy = Console.ReadLine();
SqlConnection conn = new SqlConnection("server=.;database=adocc;user=sa;pwd=123;");
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "select *from sub where subjectname = @name";
cmd.Parameters.Clear();
cmd.Parameters.Add("@name", zy);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)//开数据库查询是否有输入的信息,输入的是课程名字,需要到专业课表中查询,
{ //学生表中的专业课是课程表中编号的外键,只有把名字变为编号才可以在学生表中查询
dr.Read();
ka = dr["subcode"].ToString();//需要定义一个变量将通过名字在课程表中查询到的信息中的编号接收
conn.Close();
break;
}
else { Console.WriteLine("您的输入有误,请重新输入"); conn.Close(); }
} Console.WriteLine("学号:" + bh + " 姓名: " + na + " 性别: " + xb + " 生日: " + birth + " 专业: " + zy);
Console.Write("以上为新增学生信息,是否确定添加?确定输入Y: ");
string y = Console.ReadLine();
if (y == "Y")//判断输入确定指令才执行
{
Console.Clear();//刷新打印
datastudent dt = new datastudent();//实例化
dt.tj(bh, na, bl, birth, ka);//在数据库访问类里将添加方法建立了一个对象,直接返回参数调用
dt.dayin();//数据库访问类里面有一个打印表的对象方法,直接调用
break;
}
else { }//如果输入的不是确定指令,则回到此循环顶部重新输入
}
} else if (cz == "")//根据输入指令操作,与上面添加一个原理,调用的方法都在数据库访问类
{
string bh = ""; string na = ""; string xb = ""; DateTime birth = new DateTime(); string zy = "";
for (; ; )
{
for (; ; )
{ Console.Write("请输入修改学生编号:");
bh = Console.ReadLine();
bool pd = new datastudent().coxg(bh);
if (pd == true)
{
Console.WriteLine("已查询到" + bh + "的学生信息,请进行以下修改:");
break;
}
else { Console.WriteLine("没有查询到此学号的学生,请重新输入!"); }
}
for (; ; )
{
string nna = new datastudent().naxg(bh);
Console.WriteLine(bh + "学生当前姓名为" + nna);
Console.Write("请输入您的修改:");
na = Console.ReadLine();
if (na != "")
{
break;
}
else { Console.WriteLine("输入不能为空,请重新输入!"); }
} bool b2;
for (; ; )
{
string nn = new datastudent().xbxg(bh);
Console.WriteLine(bh + "学生当前的性别为" + nn);
Console.Write("请输入您的修改:");
xb = Console.ReadLine();
if (xb == "男") { b2 = true; break; }
else if (xb == "女") { b2 = false; break; }
else { Console.WriteLine("您的输入有误,请重新输入!"); }
} for (; ; )
{
DateTime sr = new datastudent().birxg(bh);
Console.WriteLine(bh + "学生当前的生日为:" + sr);
try
{
Console.Write("请输入您的修改:");
birth = Convert.ToDateTime(Console.ReadLine());
break;
}
catch
{
Console.WriteLine("输入有误,请重新输入!");
}
} string ka = ""; for (; ; )
{
string zyy = new datastudent().zhuanye(bh);
Console.WriteLine(bh + "学生当前的专业为:" + zyy);
Console.Write("请输入您的修改:");
zy = Console.ReadLine();
SqlConnection conn = new SqlConnection("server=.;database=adocc;user=sa;pwd=123;");
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "select *from sub where subjectname = @name";
cmd.Parameters.Clear();
cmd.Parameters.Add("@name", zy);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
dr.Read();
ka = dr["subcode"].ToString();
conn.Close();
break;
}
else { Console.WriteLine("您的输入有误,请重新输入"); conn.Close(); }
}
//输入完以后先将此条信息打印一下,可以开数据库将此信息查询打印,此处直接打印,在删除方法中用了数据库打印
Console.WriteLine("学号:" + bh + " 姓名: " + na + " 性别: " + xb + " 生日: " + birth + " 专业: " + zy);
Console.Write("以上为新增学生信息,是否确定添加?确定输入Y: ");
string y = Console.ReadLine();
if (y == "Y")
{
Console.Clear();
datastudent dt = new datastudent();
dt.xg(bh, na, b2, birth, ka);
dt.dayin();
break;
}
else { }
}
}
else if (cz == "")
{
string bh = "";
for (; ; )
{
for (; ; )
{ Console.Write("请输入删除的学生编号:");
bh = Console.ReadLine();
bool pd = new datastudent().coxg(bh);
if (pd == true)
{
break;
}
else { Console.WriteLine("没有查询到此学号的学生,请重新输入!"); }
} datastudent dat = new datastudent();
dat.dy(bh);
Console.Write("以上为根据您的输入查询到的学生信息,是否确定删除?确定输入Y: ");
string y = Console.ReadLine();
if (y == "Y")
{
Console.Clear();
dat.sc(bh);
Console.WriteLine("删除成功!");
dat.dayin();
break;
}
else { }
} } }
else//如果操作指令输入有误,将循环返回顶部重新输入
{
Console.WriteLine("输入错误,请重新输入!");
}
} Console.ReadKey();
}
}
}

效果显示:

ADO.Net 综合练习题的更多相关文章

  1. CSS3背景 制作导航菜单综合练习题

    CSS3背景 制作导航菜单综合练习题 小伙伴们,根据所学知识,使用CSS3实现下图的导航菜单效果 任务 1.制作导航圆角 提示:使用border-radius实现圆角 2.制作导航立体风格 提示:使用 ...

  2. python全栈开发笔记---数据类型--综合练习题

    一.有两个列表 l1 = [11,22,33]       l2 = [22,33,44] a. 获取内容相同的元素列表 for item in l1: if item in l2: print(it ...

  3. 第2章 Python基础-字符编码&数据类型 综合 练习题

    1.转换 将字符串s = "alex"转换成列表 s = "alex" s_list = list(s) print(s_list) 将字符串s = " ...

  4. 一道综合练习题实践list及dictionary集合类

    定义一个员工的集合,对员工集合内的元素进行查询和删除.实现员工的签到和签退,要求如下: //A:每天只能签到一次 //B:签退前必须已经签到 //C:显示打卡记录 代码如下:员工信息类: using ...

  5. if else 选择机构 _多重if选择机构_if选择结构嵌套(综合练习题——code)

    import java.util.*; class If01{ public static void main(String[ ]args){ //练习1:假如张三参加Java考试,判断如果在95分以 ...

  6. MySQL基础CRUD编程练习题的自我提升(1)

    基础知识: 1.数据库的连接 mysql -u -p -h -u 用户名 -p 密码 -h host主机 2:库级知识 2.1 显示数据库: show databases; 2.2 选择数据库: us ...

  7. MySQL 练习题 附答案,未完

    综合练习题 表结构 整合一下方便查看 teacher  student  course scors 练习题 1.自行创建测试数据 create table student( sid int prima ...

  8. JAVA 入门第二章 (面对对象)

    本渣渣鸽了一个月终于有时间更新.因为有c++基础,学起来这章还是比较简单的,本章我觉得是程序猿质变课程,理解面向对象的思想,掌握面向对象的基本原则以及 Java 面向对象编程基本实现原理,熟练使用封装 ...

  9. 最全的MySQL基础【燕十八传世】

    1.课前准备! 开启mysql服务:1).配置环境变量;2).net start mysql 将该sql文件导入到你的数据库中,以下所有操作都是基于该数据库表操作的!!! [此笔记是本人看着视频加上自 ...

随机推荐

  1. 用excel批量生成insert语句

    excel表格中有A.B.C三列数据,分别对应TableName的UserId.UserName.UserPwd三个字段.如下图所示 在excel的D2的位置,也就是A.B.C列的后面一列,添加下面公 ...

  2. 各平台免费翻译API

    google http://translate.google.cn/translate_a/single?client=gtx&dt=t&dj=1&ie=UTF-8&s ...

  3. SQL with(unlock)与with(readpast)

    所有Select加 With (NoLock)解决阻塞死锁,在查询语句中使用 NOLOCK 和 READPAST 处理一个数据库死锁的异常时候,其中一个建议就是使用 NOLOCK 或者 READPAS ...

  4. 微信小程序:block的隐藏

    <block/> 并不是一个组件,它仅仅是一个包装元素,不会在页面中做任何渲染,只接受控制属性. 所以 hidden.display等通用隐藏元素的方法对block是无效的 想要隐藏blo ...

  5. gentoo rt-thread pkgs --update except Exception, e:

    使用 rt-thread pkgs --update 时候, 提示出错,信息如下: Traceback (most recent call last): File "/home/ptz/.e ...

  6. 如何使用命令行备份SAP HANA数据库

    SAP HANA是一个在in-memory内存中的数据平台,部署为内部部署应用. 这是一个革命性的平台,它最适合进行实时分析,并开发和部署实时应用程序. 请点击这里了解更多有关SAP HANA. 通过 ...

  7. git 出现冲突时的解决办法

    <一> 二者兼得最麻烦 1, 出现冲突一般出现在群体开发两个及以上开发者同时修改同一个文件时 2, 具体表现为 git pull , git push 和 git commit 命令执行失 ...

  8. Django之集合函数使用与mysql表的创建特殊字段分析

    1. 集合函数的使用场景: -- 单独使用: 不分组, 只查聚合结果 -- 分组使用: 按字段分组, 可查询分组字段与聚合结果 2. 导入聚合函数 from django.db.models impo ...

  9. WPF 透明窗体

    窗体属性中设置:Background="Transparent" AllowsTransparency="True" WindowStyle="Non ...

  10. Delphi Locate 详解1 转

    TDataSet控件以及它的继承控件,例如TSimpleDataSet/TClientDataSet等都可以使用Locate方法在结果数据集中查寻数据.程序首先必须使用SQL命令从后端数据库中取得数据 ...