zoukankan      html  css  js  c++  java
  • 完整修改删除,防止数据库字符串攻击

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

    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("用户名" + "	" + "密码" + "	" + "昵称" + "	" + "性别" + "	" + "生日" + "            " + "民族");
    
                    //实例化,创建类,连接数据库
                    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"] + "	" + dr["password"] + "	" + dr["nickname"] + "	" + (((bool)dr["sex"]) ? "" : "") + "	" + Convert.ToDateTime(dr["brithday"]).ToString("yyy年MM月dd日") + "	" + 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();
            }
        }
    }

  • 相关阅读:
    单例设计模式
    MySQL数据类型
    MySQL创建、修改、删除数据库
    HTTP请求与响应
    netcore在CentOS7 下使用处理图片的问题
    SQL删除重复数据
    不同浏览器对cookie大小与个数的限制
    asp.net实现SQL2005的通知数据缓存
    MS SQL 设置自增长字段默认值
    MS SQL 批量操作
  • 原文地址:https://www.cnblogs.com/juyangchao12/p/5869563.html
Copyright © 2011-2022 走看看