首页 > 代码库 > 完整修改删除,防止数据库字符串攻击

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

一、完整修改和查询:
中间变量运用。

1、先查

2、执行操作

----------------------------------------------------
二、防止SQL数据库字符串注入攻击:
需要使用cmd.Parameters这个集合
占位符: @key 代表这个位置用这个占位符占住了

Parameters这个集合中将此占位符所代表的数据补全

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);

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Data.SqlClient;//引用这个空间命名namespace 作业{    class Program    {        static void Main(string[] args)        {            while (true)            {                //显示信息                                Console.Clear();//清屏                #region                Console.WriteLine("用户名" + "\t" + "密码" + "\t" + "昵称" + "\t" + "性别" + "\t" + "生日" + "            " + "民族");                //实例化,创建类,连接数据库                SqlConnection conn = new SqlConnection("server=.;database=Data0720;user=sa;pwd=123;");                //设置数据库中的表的操作                SqlCommand cmd = conn.CreateCommand();                cmd.CommandText = "select * from Users;";                //执行操作                conn.Open();                SqlDataReader dr = cmd.ExecuteReader();                while (dr.Read())                {                    Console.WriteLine(dr["username"] + "\t" + dr["password"] + "\t" + dr["nickname"] + "\t" + (((bool)dr["sex"]) ? "" : "") + "\t" + Convert.ToDateTime(dr["brithday"]).ToString("yyy年MM月dd日") + "\t" + dr["nation"]);                }                conn.Close();                #endregion                Console.WriteLine("-------------------------------------------------------");                Console.Write("请输入您想执行的操作(1.添加  2.修改   3.删除):");                string n = Console.ReadLine();                //添加信息                if (n == "1")                {                    Console.Write("请输入您要添加的用户名:");                    string Uname = Console.ReadLine();                    Console.Write("请输入您要添加的密码:");                    string Pwd = Console.ReadLine();                    Console.Write("请输入您要添加的昵称:");                    string Nname = Console.ReadLine();                    Console.Write("请输入您要添加的性别:");                    bool Sex = Convert.ToBoolean(Console.ReadLine());                    Console.Write("请输入您要添加的生日:");                    DateTime Birthday = Convert.ToDateTime(Console.ReadLine());                    Console.Write("请输入您要添加的民族:");                    string Nation = Console.ReadLine();                    //连接数据库                    SqlConnection coon1 = new SqlConnection("server=.;database=Data0720;user=sa;pwd=123");                    //设置数据库中的表格的操作                    SqlCommand cmd1 = coon1.CreateCommand();                    cmd1.CommandText = "insert into Users values(‘" + Uname + "‘,‘" + Pwd + "‘,‘" + Nname + "‘,‘" + (Sex ? "1" : "0") + "‘,‘" + Birthday + "‘,‘" + Nation + "‘)";                    //执行操作                    coon1.Open();                    cmd1.ExecuteNonQuery();                    coon1.Close();                    //提示是否添加成功                    Console.WriteLine("您已添加成功,请单击刷新信息表!");                    Console.ReadLine();                }                //修改信息                else if (n == "2")                {                    bool has = false;//定义一个bool类型的变量                    Console.Write("请输入要修改的用户名:");                    string Uname = Console.ReadLine();                    //1、连接数据库                    SqlConnection conn2 = new SqlConnection("server=.;database=Data0720;user=sa;pwd=123;");//编写连接字符串                                        //先查看信息表中是否有想要修改的那个用户名,有则修改,没有则重新输入                    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();                    if (has)//查到要修改的用户                    {                        Console.WriteLine("已查到" + Uname + "这个用户的信息,请进行修改:");                        Console.Write("请输入修改后的密码:");                        string Pwd = Console.ReadLine();                        Console.Write("请输入修改后的性别:");                        string Sex = Console.ReadLine();                        Console.Write("请输入修改后的生日:");                        string Birthday = Console.ReadLine();                        //2、设置修改内容的操作,防止数据攻击                        //cmd2.CommandText = "update Users set password=‘"+Pwd+"‘,sex=‘"+((Sex=="男")?"1":"0")+"‘,brithday=‘"+Birthday+"‘ where username=‘"+Uname+"‘";                        //用  @key 占位符                          cmd2.CommandText = "update Users set password=@pwd,sex=@sex,brithday=@bir where username=@uname;";                        cmd2.Parameters.Clear();//这步必须有,一定要先清空                        cmd2.Parameters.Add("@pwd",Pwd);                        cmd2.Parameters.Add("@sex",(Sex=="")?"1":"0");                        cmd2.Parameters.Add("@bir",Birthday);                        cmd2.Parameters.Add("@uname",Uname);                        //3、执行操作                        conn2.Open();                        cmd2.ExecuteNonQuery();                        conn2.Close();                        //4、提示一下是否修改完成                        Console.WriteLine("您已修改完成,请单击刷新信息表");                        Console.ReadLine();                    }                    else                    {                        Console.WriteLine("未查到该用户,请核实后重新输入!");                    }                }                //删除信息                else if (n == "3")                {                    Console.Write("请输入要删除的用户名:");                    string Uname = Console.ReadLine();                    //1、连接数据库                    SqlConnection conn3 = new SqlConnection("server=.;database=Data0720;user=sa;pwd=123");                    //查询是否有该用户                    bool has1 = false;//定义一个bool类型的变量                    SqlCommand cmd3 = conn3.CreateCommand();                    cmd3.CommandText = "select * from Users where username=‘" + Uname + "‘; ";                    conn3.Open();                    SqlDataReader dr3 = cmd3.ExecuteReader();                    if (dr3.HasRows)//如果查出有该用户                    {                        has1 = true;                    }                    conn3.Close();                    if (has1)                    {                        Console.WriteLine("已查到" + Uname + "这个用户的信息,请进行删除:");                        //2、设置要对数据库中的表进行的操作内容                                      cmd3.CommandText = "delete from Users where username=@uname";                        cmd3.Parameters.Clear();                        cmd3.Parameters.Add("@uname", Uname);                        //3、执行操作                        conn3.Open();//打开通道                        cmd3.ExecuteNonQuery();//执行操作                        conn3.Close();//关闭通道,通道只有一个,每次用完都要关闭,要不然下次用连接不上                        //提示一下,看是否删除成功,成功则显示提示语句,不成功则不显示,并报错                        Console.WriteLine("您已删除成功,请单击刷新信息表!");                        Console.ReadLine();                    }                    else                    {                        Console.WriteLine("未查到该用户,请核实后重新输入!");                    }                }                else                {                    Console.WriteLine("您的输入有误,请重新输入!");                    Console.ReadLine();                }            }            Console.ReadLine();        }    }}

技术分享技术分享

 

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