完整的增删改练习题
方字符串攻击方法:可以在修改或者删除操作时使用这一方法
数据库防字符串注入攻击:
cmd.CommandText = "update student set name=@Sname,sex=@Ssex,birthday=@Sbirthday,score=@Sscore where code = @Scode";
cmd.Parameters.Clear();
cmd.Parameters.Add("@Sname", Sname);
cmd.Parameters.Add("@Ssex", Ssex);
cmd.Parameters.Add("@Sbirthday", Sbirthday);
cmd.Parameters.Add("@Sscore", Sscore);
cmd.Parameters.Add("@Scode", Scode);
练习题
根据数据库中的表,完成以下操作
1、查询显示
2、请输入你想要做的操作(1:添加,2:删除,3:修改):
3、提示用户操作是否成功,刷新数据,回到2等待用户操作
数据库表格:
create database netlx go use netlx go create table stu ( code nvarchar(50)primary key, name nvarchar(50), sex nvarchar(10), birth datetime, score decimal(10,2) ) insert into stu values('s101','张三','男','1995-3-2',99) insert into stu values('s102','李四','男','1995-4-2',89) insert into stu values('s103','王五','男','1994-3-8',95) insert into stu values('s104','赵六','男','1993-8-4',79) insert into stu values('s105','小红','女','1996-5-11',68)
VS连接操作:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; namespace ADO.Net_数据库增删改查练习题完整版 { class Program { static void Main(string[] args) { //先连接数据库 SqlConnection conn = new SqlConnection("server=.;database=netlx;user=sa;pwd=123;"); SqlCommand cmd = conn.CreateCommand(); //1.查询数据库 for (; ; )//最外部加个循环,在执行完增删改之后,刷新显示表 { cmd.CommandText = "select * from stu";//表查询 conn.Open(); SqlDataReader dr = cmd.ExecuteReader();//接收一下执行的查询语句所查询的信息 if (dr.HasRows)//判断是否查到数据,查到就继续往下走 { while (dr.Read())//循环打印每一行的信息 { string bir = Convert.ToDateTime(dr["birth"]).ToString("yyyy年MM月dd日"); string sor = Convert.ToDecimal(dr["score"]).ToString("#.##"); Console.WriteLine("学号:" + dr["code"] + " 姓名:" + dr["name"] + " 性别:" + dr["sex"] + " 生日:" + bir + " 成绩:" + sor + ""); } } conn.Close();//用完数据库关闭,以免一直占用,之后无法使用 //2.根据用户输入执行增/改/删 for (; ; )//外部加个无限循环,再输入有误时返回重新走一遍 { Console.Write("请输入操作指令序号(1.增加 2.修改 3.删除):"); string dh = Console.ReadLine(); //下面要根据学生学号执行增删改,先判断用户输入的学号有无此学生 if (dh == "1") //如果用户输入增加序号,走这一步,执行增加 { for (; ; ) { try { Console.Write("请输入要添加的学生学号:"); string zcode = Console.ReadLine(); Console.Write("请输入要添加的学生姓名:"); string zname = Console.ReadLine(); Console.Write("请输入要添加的学生性别:"); string zsex = Console.ReadLine(); Console.Write("请输入要添加的学生生日:"); DateTime zbir = Convert.ToDateTime(Console.ReadLine()); Console.Write("请输入要添加的学生成绩:"); decimal zscore = Convert.ToDecimal(Console.ReadLine()); cmd.CommandText = "insert into stu values('" + zcode + "','" + zname + "','" + zsex + "','" + zbir + "','" + zscore + "')"; conn.Open(); cmd.ExecuteNonQuery();//将输入的SQL语句在数据库里执行 conn.Close(); break; } catch { Console.WriteLine("输入有误,请重新输入!"); } } Console.Clear();//每执行完一个数据库操作方法,清空一下控制台界面,跳出循环,进入外循环返回顶部将表查询一遍 Console.WriteLine("添加成功!"); break; } else if (dh == "2") //输入修改,走这一步执行修改 { bool cs = false;//先定义一个判断变量判断一下,数据库中有没有输入的学号 while (true) { Console.Write("请输入要修改的学生学号:"); string xcode = Console.ReadLine(); cmd.CommandText = "select * from stu where code= @xcode ";//防攻击 cmd.Parameters.Clear();//类似于哈希表集合,使用前先清空一下 cmd.Parameters.Add("@xcode",xcode);//将SQL语句中的查询条件按照格式添加在这个集合中,返给@xcode中 conn.Open(); SqlDataReader dr1 = cmd.ExecuteReader(); if (dr1.HasRows)//如果查询到数据,则返回一个ture到判断变量中 { cs = true; } else//如果查询不到,false { cs = false; } conn.Close(); if (cs)// { try//判断程序有没有错误 { Console.WriteLine("已查询到该学生,可以进行修改"); Console.Write("请输入修改后的学生姓名:"); string zname = Console.ReadLine(); Console.Write("请输入修改后的学生性别:"); string zsex = Console.ReadLine(); Console.Write("请输入修改后的学生生日:"); DateTime zbir = Convert.ToDateTime(Console.ReadLine()); Console.Write("请输入修改后的学生成绩:"); decimal zscore = Convert.ToDecimal(Console.ReadLine()); cmd.CommandText = "update stu set name= @zname ,sex= @zsex ,birth=@zbir ,score=@zscore where code= @xcode "; cmd.Parameters.Clear(); cmd.Parameters.Add("@zname",zname); cmd.Parameters.Add("@zsex",zsex); cmd.Parameters.Add("@zbir",zbir); cmd.Parameters.Add("@zscore",zscore); cmd.Parameters.Add("@xcode",xcode); conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); break; } catch { Console.WriteLine("输入有误,请重新输入!"); } } else { Console.WriteLine("没有此学生!请重新输入!"); } } Console.Clear(); Console.WriteLine("修改成功!"); break; } else if (dh == "3")//输入删除走这一步,执行删除 { bool cs = false;//先定义一个判断变量判断一下,数据库中有没有输入的学号 while (true) { Console.Write("请输入学生学号:"); string xcode = Console.ReadLine(); cmd.CommandText = "select * from stu where code=@xcode"; cmd.Parameters.Clear(); cmd.Parameters.Add("@xcode",xcode); conn.Open(); SqlDataReader dr1 = cmd.ExecuteReader(); if (dr1.HasRows) { cs = true; } else { cs = false; } conn.Close(); if (cs)//判断查询到此信息,进行执行下一步操作 { try { Console.WriteLine("已查询到此学生,可以进行下一步操作"); cmd.CommandText = "delete from stu where code=@xcode"; cmd.Parameters.Clear(); cmd.Parameters.Add("@xcode",xcode); conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); break;//执行完操作直接跳出 } catch { Console.WriteLine("输入有误,请重新输入!"); } } else//如果没有,循环从新输入 { Console.WriteLine("没有此学生!请重新输入!"); } } Console.Clear(); Console.WriteLine("删除成功!"); break;//完成整个操作直接跳出循环,进入外循环执行显示表查询 } else //如果用户不是输入上面的序号,则提示错误,重新输入 { Console.WriteLine("输入有误,请重新输入!"); } } } Console.ReadLine(); } } }