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

完整修改查询:

输入要删除的用户名,提示有没有此条数据,如果有而后提示是否确定要删除

添加:

using System.Data.SqlClient;

而后:

namespace 完整修改查询_字符串攻击
{
    class Program
    {
        static void Main(string[] args)
        {
            bool has = false;//判断用输入的数据是否存在,true表示存在,false不存在

            Console.Write("请输入要删除的用户名:");
            string uname = Console.ReadLine();

            SqlConnection conn = new SqlConnection("server=.;database=Data0928;user=sa;pwd=123");
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = "select *from Users where UserName = ‘" + uname + "‘";

            conn.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            if (dr.HasRows) //如果查到此用户信息
            {
                has = true;//将中间变量更改为true,证明有此条信息
            }
            conn.Close();

            if (has)//如果有此条信息,那么需要进行删除判断
            {
                Console.Write("已查到此用户信息,是否要删除?(Y/N)");
                string u = Console.ReadLine(); //记录用户的操作
                if (u.ToUpper() == "Y")//判断用户操作,如果是Y,说明要删除
                {
                    //下面的代码是真正删除此条数据
                    cmd.CommandText = "delete from Users where UserName = ‘" + uname + "‘";
                    int c = 0;
                    try
                    {
                        conn.Open();
                        c = cmd.ExecuteNonQuery();
                    }
                    catch
                    {
                        Console.WriteLine("服务器连接失败!!");
                    }
                    finally
                    {
                        conn.Close();
                    }

                    if (c > 0)//判断是否删除成功
                        Console.WriteLine("删除成功!");
                    else
                        Console.WriteLine("删除失败!!");
                }
                else//用户选择不删除
                {
                    Console.WriteLine("删除取消!");
                }
            }
            else//未查到用户信息,判断has=false
            {
                Console.WriteLine("用户名输入错误!未查到此用户信息!");
            }

            Console.ReadKey();
        }
    }
}

防止字符串攻击:
使用  @变量名

namespace Update
{
    class Program
    {
        static void Main(string[] args)
        {
            bool has = false;//判断用输入的数据是否存在,true表示存在,false不存在

            Console.Write("请输入要修改的用户名:");
            string uname = Console.ReadLine();

            SqlConnection conn = new SqlConnection("server=.;database=Data0928;user=sa;pwd=123");
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = "select *from Users where UserName = ‘" + uname + "‘";

            conn.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            if (dr.HasRows) //如果查到此用户信息
            {
                has = true;//将中间变量更改为true,证明有此条信息
            }
            conn.Close();

            if (has)//如果有此条信息,那么需要进行删除判断
            {
                Console.Write("已查到此用户信息,是否要修改?(Y/N)");
                string u = Console.ReadLine(); //记录用户的操作
                if (u.ToUpper() == "Y")//判断用户操作,如果是Y,说明要删除
                {
                    Console.Write("请输入要修改的密码:");
                    string pwd = Console.ReadLine();
                    Console.Write("请输入要修改的昵称:");
                    string nick = Console.ReadLine();
                    Console.Write("请输入要修改的性别:");
                    string sex = Console.ReadLine();
                    Console.Write("请输入要修改的生日:");
                    string bir = Console.ReadLine();
                    Console.Write("请输入要修改的民族:");
                    string nation = Console.ReadLine();
                    Console.Write("请输入要修改的班级:");
                    string cla = Console.ReadLine();
                    //防止字符串攻击
                    cmd.CommandText = "update Users set [email protected],[email protected],[email protected],[email protected],[email protected],[email protected] where [email protected]";
                    cmd.Parameters.Clear();
                    cmd.Parameters.AddWithValue("@pwd", pwd);
                    cmd.Parameters.AddWithValue("@nick", nick);
                    cmd.Parameters.AddWithValue("@sex", sex);
                    cmd.Parameters.AddWithValue("@bir", bir);
                    cmd.Parameters.AddWithValue("@nation", nation);
                    cmd.Parameters.AddWithValue("@cla", cla);
                    cmd.Parameters.AddWithValue("@uname", uname);

                    conn.Open();
                    cmd.ExecuteNonQuery();
                    conn.Close();
                    Console.WriteLine("修改成功!");
                }
                else//用户选择不删除
                {
                    Console.WriteLine("修改取消!");
                }
            }
            else//未查到用户信息,判断has=false
            {
                Console.WriteLine("用户名输入错误!未查到此用户信息!");
            }
            Console.ReadKey();
        }
    }
}
时间: 2024-11-29 08:27:30

完整修改查询、字符串攻击的相关文章

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

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

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

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

完整修改和删除以及防字符串注入攻击

完整修改: 1 //1.接收用户输入进来的学生编号 2 Console.Write("请输入要修改的学生编号:"); 3 string Scode = Console.ReadLine(); 4 5 //2.判断有无此学生 6 SqlConnection conn = new SqlConnection("server=.;database=Data0425;user=sa;pwd=123;"); 7 SqlCommand cmd = conn.CreateComm

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

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

完整增删改查,数据库字符串攻击

复习一下,基础的增删改查, 增一条信息,删一条信息.改一条信息 询问语句 Console.WriteLine("请输入你的学号"); string xuehao = Console.ReadLine(); Console.WriteLine("请输入你的姓名"); string name = Console.ReadLine(); Console.WriteLine("请输入你的班级"); string banji= Console.ReadLi

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

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

EF删除,查询,Linq查询,Lambda查询,修改链接字符串

(1)//删除操作 public bool delete() { try { a_context = new AEntities(); b1 = new Table_1(); //删除只需要写主键就行了 b1.id = 3; a_context.Entry<Table_1>(b1).State = EntityState.Deleted; a_context.SaveChanges(); return true; } catch (Exception) { return false; } }

格式化字符串攻击原理及示例

一.类printf函数簇实现原理 类printf函数的最大的特点就是,在函数定义的时候无法知道函数实参的数目和类型. 对于这种情况,可以使用省略号指定参数表. 带有省略号的函数定义中,参数表分为两部分,前半部分是确定个数.确定类型的参数,第二部分就是省略号,代表数目和类型都不确定的参数表,省略号参数表中参数的个数和参数的类型是事先的约定计算出来的,每个实参的地址(指针)是根据确定参数表中最后一个实参的地址算出来的. 这里涉及到函数调用时的栈操作.函数栈的栈底是高地址,栈顶是底地址.在函数调用 时

[Asp.Net]状态管理(Session、Application、Cache、Cookie 、Viewstate、隐藏域 、查询字符串)

Session:  1. 客户在服务器上第一次打开Asp.Net页面时,会话就开始了.当客户在20分钟之内没有访问服务器,会话结束,销毁session.(当然也可以在Web.config中设置缓存时间)可以在Global.aspx的Session_Start()事件处理程序中,可以初始化会话变量.在下面的实例中,名为mydata的会话状态被初始化为0: 运行结果: 2.Session是保存在服务器端的用户变量.我可以在一个页面中对Session进行值,然后在另一个页面里访问它. Session的