首页 > 代码库 > ADO.NET测试题
ADO.NET测试题
第一部分:
新建一个数据库:ADO测试,包含下面两个数据表,使用代码创建,并保留创建的代码文本。
学生表Student:
编号(Code):nvarchar类型,不能为空,主键
姓名(Name):nvarchar类型,不能为空
性别(Sex):bit类型,不能为空,true为男,false为女
生日(Birthday):datetime类型,不能为空
专业编号(SubjectCode):nvarchar类型,可以为空
Code(主键) |
Name |
Sex |
Birthday |
SubjectCode |
S001 |
张三 |
true |
1994/1/12 |
Z001 |
S002 |
李四 |
true |
1995/2/22 |
Z002 |
S003 |
王五 |
true |
1996/8/28 |
Z002 |
S004 |
小花 |
false |
1997/3/6 |
Z003 |
专业表Subject:
专业编号(SubjectCode):nvarchar类型,不能为空,主键
专业名称(SubjectName):nvarchar类型,不能为空
SubjectCode(主键) |
SubjectName |
Z001 |
商务英语 |
Z002 |
软件工程 |
Z003 |
旅游 |
Z004 |
工商管理 |
第二部分:
新建一个控制台应用程序:
一、数据显示:
将Student表数据查询显示,显示格式为:
编号 姓名 性别 年龄 生日 专业
001 张三 男 22 1994年1月12日 商务英语
……
……
统计:总人数为xx人,平均年龄为xx岁。
性别显示为男/女(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并回车时,提示用户输入需要更改的学生编号,如果有此学生,那么除学生编号外,其余的内容全部进行修改,格式为:
S001学生当前姓名为:张三
请输入您的修改:
S001学生当前的性别为:男
请输入您的修改:
……
每次修改后都需要与新增时一样的判断,当全部内容都修改完毕后,将修改后的学生信息打印显示出来,并询问“以上为修改后的学生信息,是否确定修改?(Y/N):”,当用户输入Y并回车才真正确定修改,并提示修改是否成功,如果修改成功,则清空控制台内容,刷新显示最新的Student表数据,并提示修改成功,继续回到“二”等待用户继续操作。
五、删除:
当用户输入3并回车时,提示用户输入需要删除的学生编号,如果有此学生,那么将此学生的信息展示出来,并提示“是否要删除此学生的信息?(Y/N)”,当用户输入Y确定删除后,才进行删除,并提示删除是否成功,如果删除成功,则清空控制台内容,刷新显示最新的Student表数据,并提示删除成功,继续回到“二”等待用户继续操作。
数据库内容:
实体类:Student.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; namespace ADONET测试.App_Code { public class Student { //连接数据库 SqlConnection conn = null; SqlCommand comm = null; public Student() { conn = new SqlConnection("server=.;database=ADO;user=sa;pwd=123"); comm = conn.CreateCommand(); } private string _Code; /// <summary> /// 学生编号 /// </summary> public string Code { get { return _Code; } set { _Code = value; } } private string _Name; /// <summary> /// 学生姓名 /// </summary> public string Name { get { return _Name; } set { _Name = value; } } private bool _Sex; /// <summary> /// 学生性别 /// </summary> public bool Sex { get { return _Sex; } set { _Sex = value; } } /// <summary> /// 学生性别扩展属性 /// </summary> public string SexStr { get { return _Sex ? "男" : "女"; } } private DateTime _Birthday; /// <summary> /// 生日 /// </summary> public DateTime Birthday { get { return _Birthday; } set { _Birthday = value; } } /// <summary> /// 生日扩展属性 /// </summary> public string BirthdayStr { get { return _Birthday.ToString("yyyy年MM月dd日"); } } /// <summary> /// 年龄-生日扩展属性 /// </summary> public int Age { get { int dt1 = DateTime.Now.Year; int dt2 = DateTime.Parse(_Birthday.ToString()).Year; return dt1 - dt2; } } /// <summary> /// 科目编号 /// </summary> private string _SubjectCode; public string SubjectCode { get { return _SubjectCode; } set { _SubjectCode = value; } } /// <summary> /// 科目名称 /// </summary> public string SubjectName { get { string end = "未填写"; comm.CommandText = "select *from Subject where SubjectCode=@a"; comm.Parameters.Clear(); comm.Parameters.AddWithValue("@a",_SubjectCode); conn.Open(); SqlDataReader dr = comm.ExecuteReader(); if (dr.HasRows) { dr.Read(); end = dr["SubjectName"].ToString(); } conn.Close(); return end; } } } }
数据访问类:StudentData.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; namespace ADONET测试.App_Code { public class StudentData { //连接数据库 SqlConnection conn = null; SqlCommand comm = null; public StudentData() { conn = new SqlConnection("server=.;database=ADO;user=sa;pwd=123"); comm = conn.CreateCommand(); } //查询 //查询所有学生的数据 public List<Student> Select() { List<Student> slist = new List<Student>(); comm.CommandText = "select *from Student"; conn.Open(); SqlDataReader dr = comm.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(); slist.Add(st); } } conn.Close(); return slist; } //根据学生编号查询某个学生的数据 public List<Student> Select1(string code) { List<Student> slist = new List<Student>(); comm.CommandText = "select *from Student where Code=@a"; comm.Parameters.Clear(); comm.Parameters.AddWithValue("@a", code); conn.Open(); SqlDataReader dr = comm.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(); slist.Add(st); } } conn.Close(); return slist; } //根据编号查询判断某个学生在数据库中是否存在,存在返回true,不存在返回false public bool Select(string code) { bool has = false; comm.CommandText = "select *from Student where code=@a"; comm.Parameters.Clear(); comm.Parameters.AddWithValue("@a", code); conn.Open(); SqlDataReader dr = comm.ExecuteReader(); if (dr.HasRows) { has = true; } conn.Close(); return has; } //科目名称模糊查询,判断该科目是否存在,存在返回true,不存在返回false public bool select1(string suname) { bool has = false; Student st = new Student(); comm.CommandText = "select SubjectCode from Subject where SubjectName like ‘%" + suname + "%‘"; conn.Open(); SqlDataReader dr = comm.ExecuteReader(); if (dr.HasRows) { has = true; } conn.Close(); return has; } //科目名称模糊查询,获取对应的科目编号 public Student select(string suname) { Student st = new Student(); comm.CommandText = "select SubjectCode from Subject where SubjectName like ‘%" + suname + "%‘"; conn.Open(); SqlDataReader dr = comm.ExecuteReader(); if (dr.HasRows) { while (dr.Read()) { st.SubjectCode = dr["SubjectCode"].ToString(); } } conn.Close(); return st; } //添加 public bool Insert(Student stu) { bool ok = false; int count = 0; comm.CommandText = "insert into Student values(@a,@b,@c,@d,@e)"; comm.Parameters.Clear(); comm.Parameters.AddWithValue("@a", stu.Code); comm.Parameters.AddWithValue("@b", stu.Name); comm.Parameters.AddWithValue("@c", stu.Sex); comm.Parameters.AddWithValue("@d", stu.Birthday); comm.Parameters.AddWithValue("@e", stu.SubjectCode); try { conn.Open(); count = comm.ExecuteNonQuery(); } catch { ok = false; } finally { conn.Close(); } if (count > 0) ok = true; else ok = false; return ok; } //删除 public bool Delete(string st) { bool have = false; int count_del = 0; comm.CommandText = "delete from Student where Code=@a"; comm.Parameters.Clear(); comm.Parameters.AddWithValue("@a", st); try { conn.Open(); count_del = comm.ExecuteNonQuery(); } catch { have = false; } finally { conn.Close(); } if (count_del > 0) have = true; return have; } //修改 public bool Update(Student user) { bool ok = false; int count = 0; comm.CommandText = "update Student set Name=@b,Sex=@c,Birthday=@d,SubjectCode=@e where Code=@a"; comm.Parameters.Clear(); comm.Parameters.AddWithValue("@a", user.Code); comm.Parameters.AddWithValue("@b", user.Name); comm.Parameters.AddWithValue("@c", user.Sex); comm.Parameters.AddWithValue("@d", user.Birthday); comm.Parameters.AddWithValue("@e", user.SubjectCode); try { conn.Open(); count = comm.ExecuteNonQuery(); } catch (Exception ex) { Console.WriteLine(ex); ok = false; } finally { conn.Close(); } if (count > 0) { ok = true; } return ok; } } }
业务逻辑层:Program.cs
using ADONET测试.App_Code; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ADONET测试 { class Program { static void Main(string[] args) { //查询所有学生的数据,统计总人数count,统计平均年龄 int count = 0, sum = 0; List<Student> slist = new StudentData().Select();//调用StudentData类中的Select()方法查询所有学生的数据 Console.Clear(); Console.WriteLine("编号\t姓名\t性别\t年龄\t生日\t\t专业"); foreach (Student sss in slist) { Console.WriteLine(sss.Code + "\t" + sss.Name + "\t" + sss.SexStr + "\t" + sss.Age + "\t" + sss.BirthdayStr + "\t" + sss.SubjectName); count++; sum += sss.Age; } Console.WriteLine("统计:总人数为" + count + "人,平均年龄为" + (sum / count) + "岁。"); for (; ; ) { Console.Write("请输入您要继续的操作(输入数字1为新增,输入数字2为修改,输入数字3为删除):"); string operate = Console.ReadLine(); if (operate == "1") { Student stu = new Student(); for (; ; ) { Console.Write("请输入学生编号:"); stu.Code = Console.ReadLine(); if (stu.Code.Trim() == "")//判断编号是否为空 { Console.WriteLine("编号不能为空!"); } else { if (new StudentData().Select(stu.Code))//判断编号是否存在 { Console.WriteLine("此编号已存在!"); } else { break; } } } for (; ; ) { Console.Write("请输入学生姓名(不能为空):"); stu.Name = Console.ReadLine(); if (stu.Name.Trim() == "")//判断学生姓名是否为空 { Console.WriteLine("姓名不能为空!"); } else { break; } } for (; ; ) { Console.Write("请输入学生性别(男/女):"); string Sex = Console.ReadLine(); if (Sex == "男")//性别只能输入男或女 { stu.Sex = true; break; } else if (Sex == "女") { stu.Sex = false; break; } else { Console.WriteLine("性别必须为男女!"); } } for (; ; ) { Console.Write("请输入学生生日(如:2000/12/12):"); string Birthday = Console.ReadLine(); try//判断日期格式是否正确 { stu.Birthday = Convert.ToDateTime(Birthday); break; } catch { Console.WriteLine("日期格式错误!"); continue; } } for (; ; ) { Console.Write("请输入专业:"); string SubjectName = Console.ReadLine(); if (SubjectName == "")//若科目名称不输入任何信息,则不赋给科目编号任何信息(值为空) { stu.SubjectCode = ""; break; } else { if (new StudentData().select1(SubjectName))//调用StudentData类中的select1(科目名称)方法,判断是否存在该科目 //若存在返回true { Student st = new StudentData().select(SubjectName);//调用StudentData类中的select(科目名称)方法获取该科目的所有信息 stu.SubjectCode = st.SubjectCode; break; } else { Console.WriteLine("没有此专业!"); } } } Console.WriteLine("编号\t姓名\t性别\t生日\t\t专业");//输出新增学生的信息 Console.WriteLine(stu.Code + "\t" + stu.Name + "\t" + stu.SexStr + "\t" + stu.BirthdayStr + "\t" + stu.SubjectName); Console.Write("以上为新增学生的信息,是否确定添加?(Y/N):");//用户操作 string yn = Console.ReadLine(); if (yn.ToUpper() == "Y") { if (new StudentData().Insert(stu))//调用StudentData类中的Insert(Student 名称)方法 { Console.Clear(); List<Student> stlist = new StudentData().Select();//泛型集合,调用StudentData类中的Select()方法查询所有学生的数据 Console.Clear(); Console.WriteLine("编号\t姓名\t性别\t年龄\t生日\t专业"); foreach (Student sss in stlist)//打印添加后所有学生的信息 { Console.WriteLine(sss.Code + "\t" + sss.Name + "\t" + sss.SexStr + "\t" + sss.Age + "\t" + sss.BirthdayStr + "\t" + sss.SubjectName); } Console.WriteLine("添加成功!"); } else { Console.WriteLine("添加失败!"); } } else { Console.WriteLine("取消添加!"); continue; } } else if (operate == "2") { Console.Write("输入要修改的学生编号:"); string operate_update = Console.ReadLine(); if (new StudentData().Select(operate_update))//调用StudentData类中的Select(学生编号)方法,判断是否存在该编号 { //泛型集合,调用StudentData类中的Select1(学生编号)方法,查询当前学生的信息 List<Student> stlist = new StudentData().Select1(operate_update); Console.Clear(); Student stu = new Student(); stu.Code = operate_update; foreach (Student sss in stlist) { Console.WriteLine(sss.Code + "学生当前姓名为:" + sss.Name); for (; ; ) { Console.Write("请输入您的修改:"); stu.Name = Console.ReadLine(); if (stu.Name.Trim() == "")//姓名不能为空 { Console.WriteLine("姓名不能为空!"); } else { break; } } Console.WriteLine(sss.Code + "学生当前性别为:" + sss.SexStr); for (; ; ) { Console.Write("请输入您的修改:"); string sex = Console.ReadLine(); if (sex == "男")//性别只能输入男或女 { stu.Sex = true; break; } else if (sex == "女") { stu.Sex = false; break; } else { Console.WriteLine("性别必须为男女!"); } } Console.WriteLine(sss.Code + "学生当前生日为:" + sss.BirthdayStr); for (; ; ) { Console.Write("请输入您的修改:"); string birthday = Console.ReadLine(); try//判断日期格式是否正确 { stu.Birthday = Convert.ToDateTime(birthday); break; } catch { Console.WriteLine("日期格式错误!"); continue; } } Console.WriteLine(sss.Code + "学生当前专业为:" + sss.SubjectName); for (; ; ) { Console.Write("请输入您的修改:"); string subjectcode = Console.ReadLine(); if (subjectcode == "")//若科目名称不输入任何信息,则不赋给科目编号任何信息(值为空) { stu.SubjectCode = ""; break; } else { if (new StudentData().select1(subjectcode))//调用StudentData类中的select1(科目名称)方法,判断是否存在该科目 //若存在返回true { Student st = new StudentData().select(subjectcode);//调用StudentData类中的select(科目名称)方法获取该科目的所有信息 stu.SubjectCode = st.SubjectCode; break; } else { Console.WriteLine("没有此专业!"); } } } } //List<Student> stulist = new StudentData().Select1(operate_update);//泛型集合调用StudentData类中的Select1(学生编号)方法 Console.Clear(); Console.WriteLine("编号\t姓名\t性别\t年龄\t生日\t\t专业");//打印该学生修改后的所有信息 Console.WriteLine(stu.Code + "\t" + stu.Name + "\t" + stu.SexStr + "\t" + stu.Age + "\t" + stu.BirthdayStr + "\t" + stu.SubjectName); Console.Write("以上为修改后的学生信息,是否确定修改?(Y/N):"); string yn = Console.ReadLine(); if (yn.ToUpper() == "Y") { if (new StudentData().Update(stu))//调用StudentData类中的Updata(Student 名称)方法,返回True表示添加成功 { List<Student> studlist = new StudentData().Select();//泛型集合调用StudentData类中的Select()方法,获取所有学生的信息 Console.Clear(); Console.WriteLine("编号\t姓名\t性别\t年龄\t生日\t\t专业"); foreach (Student sss in studlist)//打印修改后所有学生的信息 { Console.WriteLine(sss.Code + "\t" + sss.Name + "\t" + sss.SexStr + "\t" + sss.Age + "\t" + sss.BirthdayStr + "\t" + sss.SubjectName); } Console.WriteLine("修改成功!"); } else { Console.WriteLine("修改失败!"); continue; } } else { Console.WriteLine("取消修改!"); } } else { Console.WriteLine("无此学生!"); continue; } } else if (operate == "3") { Console.Write("输入要删除的学生编号:"); string operate_delete = Console.ReadLine(); if (new StudentData().Select(operate_delete))////调用StudentData类中的Select(学生编号)方法,返回True表示存在该学生 { List<Student> stlist = new StudentData().Select1(operate_delete);//泛型集合调用StudentData类中的Select1(学生编号)方法 //获取当前学生的信息 Console.Clear(); Console.WriteLine("编号\t姓名\t性别\t年龄\t生日\t\t专业"); foreach (Student sss in stlist)//打印当前学生的信息 { Console.WriteLine(sss.Code + "\t" + sss.Name + "\t" + sss.SexStr + "\t" + sss.Age + "\t" + sss.BirthdayStr + "\t" + sss.SubjectName); } Console.Write("是否删除(Y/N)"); string yn = Console.ReadLine(); if (yn.ToUpper() == "Y") { if (new StudentData().Delete(operate_delete))//调用StudentData类中的Delete(学生编号)方法,返回True便是删除成功 { Console.Clear(); List<Student> stulist = new StudentData().Select();//泛型集合调用StudentData类中的Select()方法,获取所有学生的信息 Console.Clear(); Console.WriteLine("编号\t姓名\t性别\t年龄\t生日\t\t专业"); foreach (Student sss in stulist)//打印删除后的所有学生信息 { Console.WriteLine(sss.Code + "\t" + sss.Name + "\t" + sss.SexStr + "\t" + sss.Age + "\t" + sss.BirthdayStr + "\t" + sss.SubjectName); } Console.WriteLine("删除成功!"); } else { Console.WriteLine("删除失败!"); } } else { Console.WriteLine("取消删除!"); continue; } } else { Console.WriteLine("无此学生!"); continue; } } else { Console.WriteLine("输入有误!"); } } Console.ReadKey(); } } }
ADO.NET测试题