ADO.NET 完整修改、删除、防字符串攻击

  首先,我先把昨天所做的人事管理系统进行了优化,将其完善成为了一个更符合实际的系统。将修改及删除数据的数据库操作前面添加了一个查询语句,这样,在实际操作时,如果数据库中没有该条数据,则程序不会执行接下来的删除和修改操作,减少了程序的实际工作量。具体代码如下:

  删除数据:

            while (true)
                    {
                        bool has = false;
                        //提示用户需要操作的内容
                        Console.WriteLine("请输入要删除的用户名:");
                        string Uname = Console.ReadLine();
                        //1.连接数据库
                        SqlConnection conn2 = new SqlConnection("server=.;database=Data0720;user=sa;pwd=123;");
                        //2.设置要对数据库中的表的操作
                        SqlCommand cmd2 = conn2.CreateCommand();
                        cmd2.CommandText = "select * from Users where UserName=‘" + Uname + "‘";//查询数据库中是否有该条数据

                        conn2.Open();
                        SqlDataReader dr2 = cmd2.ExecuteReader();
                        if (dr2.HasRows)//判断是否包含代码
                        {
                            has = true;
                        }
                        conn2.Close();
                        //3.执行操作
                        if (has)//数据库中有该条信息
                        {
                            Console.WriteLine("已经查到[" + Uname + "]用户信息,是否确定要删除该条信息?(Y/N):");
                            string u = Console.ReadLine();
                            if (u.ToUpper() == "Y")
                            {
                                cmd2.CommandText = "delete  from Users where [email protected]";
                                cmd2.Parameters.Clear();
                                cmd2.Parameters.Add("@uname",Uname);

                                conn2.Open();
                                cmd2.ExecuteNonQuery();
                                conn2.Close();
                                Console.WriteLine(Uname + "删除成功!");
                                break;
                            }
                        }
                        else//数据库中没有该条信息
                        {
                            Console.WriteLine("未查到[" + Uname + "]用户信息,请确认用户名输入是否正确!");
                        }
                    }

  修改数据:

            while (true)
                    {
                        bool has = false;
                        Console.Write("请输入您要更改的用户名:");
                        string Uname = Console.ReadLine();

                        SqlConnection conn3 = new SqlConnection("server=.;database=Data0720;user=sa;pwd=123;");

                        SqlCommand cmd3 = conn3.CreateCommand();
                        cmd3.CommandText = "select * from Users where UserName=‘" + Uname + "‘";

                        conn3.Open();
                        SqlDataReader dr3 = cmd3.ExecuteReader();
                        if (dr3.HasRows)
                        {
                            has = true;
                        }
                        conn3.Close();
                        if (has)//数据库中有该条信息
                        {
                            Console.WriteLine("已经查到[" + Uname + "]用户信息,请进行修改");
                            Console.Write("请输入更改后的密码:");
                            string Pwd = Console.ReadLine();
                            Console.Write("请输入更改后的昵称:");
                            string Nname = Console.ReadLine();
                            Console.Write("请输入更改后的性别:");
                            string Sex = Console.ReadLine();
                            Console.Write("请输入更改后的生日:");
                            string Birthday = Console.ReadLine();
                            Console.Write("请输入更改后的民族:");
                            string Nation = Console.ReadLine();

                            //@key  占位符
                            cmd.CommandText = " update Users set [email protected],[email protected],[email protected],[email protected],[email protected] where [email protected];";
                            cmd.Parameters.Clear();
                            cmd.Parameters.Add("@pwd", Pwd);
                            cmd.Parameters.Add("@nname", Nname);
                            cmd.Parameters.Add("@sex", (Sex == "男") ? "1" : "0");
                            cmd.Parameters.Add("@bir", Birthday);
                            cmd.Parameters.Add("@nat", Nation);
                            cmd.Parameters.Add("@uname", Uname);

                            conn3.Open();
                            cmd3.ExecuteNonQuery();
                            conn3.Close();
                            Console.WriteLine("修改完毕!");
                            break;

                        }
                        else//数据库中没有该条信息
                        {
                            Console.WriteLine("未查到[" + Uname + "]用户信息,请确认用户名输入是否正确!");
                        }
                    }

  之后,我学习了一个防止在数据库中字符串注入攻击的方法:利用占位符@key进行编写代码。例如:

  cmd.Parameters.Clear(); --添加占位符数据之前,要清空此集合
  cmd.Parameters.Add("@pwd", Pwd); --占位符内容填充

  最后,我学习了实体类和数据访问类。

  实体类是用来封装类的,类名与数据库表名一致,成员变量名与列名一致,多一个下划线。

  数据访问类就是将对数据库的一些操作,单独写到一个类中,封成一些方法,等待调用。

时间: 2024-10-25 06:56:47

ADO.NET 完整修改、删除、防字符串攻击的相关文章

完整修改查询、字符串攻击

完整修改查询: 输入要删除的用户名,提示有没有此条数据,如果有而后提示是否确定要删除 添加: using System.Data.SqlClient; 而后: namespace 完整修改查询_字符串攻击 { class Program { static void Main(string[] args) { bool has = false;//判断用输入的数据是否存在,true表示存在,false不存在 Console.Write("请输入要删除的用户名:"); string una

ADO多条件模糊查询防字符串攻击

多条件组合查询使用字符串拼接TSQL语句来实现 1 void Button1_Click(object sender, EventArgs e) 2 { 3 string text = "select *from car"; //最终TSQL语句 4 string endtext = ""; //组合查询末尾部分 5 int num = 0; //记录当前是第几条查询,为了区别前缀是Where还是and 6 bool ok = false; //判断是否有填写查询

完整修改删除,占位符防治字符串攻击

完整修改删除相对于修改删除就是在修改删除之前先进性判断是否有要进行操作的对象,如果有再进行修改或者删除.也就是在修改删除之前先进行查询. 以修改为例 static void Main(string[] args) { bool has = false;//定义一个变量判断是否有该对象 Console.Write("请输入要修改的用户名:"); string Uname = Console.ReadLine(); SqlConnection conn = new SqlConnectio

0913 完整修改,删除-实体类-数据操作类

<完整修改删除> 昨天我们使用c#访问数据库会有很多弊端,如果数据库中没有这一条信息也会返回删除成功 今天完整修改删除就会克服这个困难 第一步 需要先查询 #region 查询                Console.WriteLine("学号" + "\t" + "姓名" + "\t" + "性别" + "\t" + "    " + "

完整修改删除,防止数据库字符串攻击

一.完整修改和查询:中间变量运用. 1.先查 2.执行操作 ----------------------------------------------------二.防止SQL数据库字符串注入攻击:需要使用cmd.Parameters这个集合占位符: @key 代表这个位置用这个占位符占住了 Parameters这个集合中将此占位符所代表的数据补全 cmd.Parameters.Clear(); --添加占位符数据之前,要清空此集合cmd.Parameters.Add("@pwd",

ADO.NET(完整修改和查询、实体类,数据访问类)

一.完整修改和查询 在编写c#语句时需考虑到用户体验,例如在编写修改语句时,需要考虑到输入的内容在数据库中是否能够找到. 中间变量运用. 1.先查 2.执行操作 完整修改语句: bool has = false; Console.Write("请输入要修改的用户名:"); string Uname = Console.ReadLine(); //到数据库中查询输入的用户名是否存在 SqlConnection conn = new SqlConnection("server=.

SQL与C#结合完整修改 删除信息

--SQl中--建立ren的数据库,插入一条信息 create database ren go use ren go create table xinxi ( code nvarchar(20) primary key,--编号 name nvarchar(20)--名字 ) insert into xinxi values('1001','zhangsan') 在上一遍操作中,有一个BUG,在操作“删改”时,如果用户输错了编号,没有提醒,那么就先要进行查询是否有这个编号的信息,然后再进行操作

对数据库进行的字符串攻击

完整修改查询: 输入要删除的用户名,提示有没有此条数据,如果有而后提示是否确定要删除 添加: using System.Data.SqlClient; 而后: namespace 完整修改查询_字符串攻击 { class Program { static void Main(string[] args) { bool has = false;//判断用输入的数据是否存在,true表示存在,false不存在 Console.Write("请输入要删除的用户名:"); string una

ADO.NET 完整的修改和删除

namespace 完整修改{ class Program { static void Main(string[] args) { bool has = false; Console.Write("请输入要修改的用户名:"); string Uname = Console.ReadLine(); SqlConnection conn = new SqlConnection("server=.;database=Data0720;user=sa;pwd=123");