综合防攻击、实体类、数据访问类进行的练习

主程序:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using 数据库操作.App_Code;

namespace 数据库操作
{
    class Program
    {
        static void Main(string[] args)
        {
            for (; ; )
            {
                Console.Write("请输入操作序号:1、查询 2、添加 3、删除 4、修改");
                string code = Console.ReadLine();//code为操作序号
                if (code == "1")//查询
                {
                    for (; ; )
                    {
                        Console.Write("请输入想要查询的用户名(输入*查看全部,输入#返回):");
                        string code1 = Console.ReadLine();//code1为查询中的操作序号或所输的第一个用户名
                        if (code1 == "*")//如果输入* 查看全部数据
                        {
                            List<Users> se = new UsersData().Select();
                            Console.WriteLine("============================数据信息==============================");
                            Console.WriteLine("序号\t用户名\t\t密码\t昵称\t性别\t生日\t\t民族\t班级");
                            foreach (Users uuu in se)
                            {
                                Console.WriteLine(uuu.Ids + "\t" + uuu.UserName + "\t" + uuu.PassWord + "\t" + uuu.NickName + "\t" + (uuu.Sex ? "男" : "女") + "\t" + Convert.ToDateTime(uuu.Birthday).ToShortDateString() + "\t" + uuu.Nation + "\t" + uuu.Class);
                            }
                        }
                        else if (code1 == "#")//输入#返回
                        {
                            break;
                        }
                        else//如果输入的是第一个用户名
                        {
                            List<string> users = new List<string>();//users泛型集合用于存放多个用户名
                            int bia = 0;//标记变量 用于检测第一个用户名是否重复 如果不重复 将此用户名放入集合 标记变量+1 后续不再执行此部分
                            for (; ; )
                            {
                                if (bia == 0)
                                {
                                    if (new UsersData().Select(code1))
                                    {
                                        users.Add(code1);
                                        bia++;
                                    }
                                    else
                                    {
                                        Console.Write("查无此用户,请重新输入!");
                                        bia++;
                                        continue;
                                    }
                                }
                                Console.Write("请继续输入想要查询的用户名(输入0结束输入):");
                                string names = Console.ReadLine();
                                if (names == "0")//如果输入0则跳出录入用户名的循环
                                {
                                    break;
                                }
                                else//如果输入的是其他用户名
                                {
                                    if (new UsersData().Select(names))//判断数据库中有无此用户名
                                    {
                                        int count = users.Count();
                                        int biao = 0;//标记变量biao
                                        for (int i = 0; i < count; i++)//集合中若已经有此用户名则biao+1
                                        {
                                            if (users[i] == names)
                                            {
                                                biao++;
                                            }
                                        }
                                        if (biao == 0)//biao为0,users集合中无此用户
                                        {
                                            users.Add(names);//将此用户名添加到users集合中
                                            continue;
                                        }
                                        else//users集合中已经有此用户名
                                        {
                                            Console.Write("输入用户名重复,请重新输入!");
                                            continue;
                                        }
                                    }
                                    else//数据库中没有此用户名
                                    {
                                        Console.WriteLine("查无此用户,请重新输入!");
                                    }
                                }
                            }
                            //用户名录入完毕,开始查询
                            if (users.Count() > 0)//users集合不为空
                            {
                                List<Users> us = new UsersData().Select(users);//设置us集合接受多个返回的数据库中的数据
                                Console.WriteLine("============================数据信息==============================");
                                Console.WriteLine("序号\t用户名\t\t密码\t昵称\t性别\t生日\t\t民族\t班级");
                                foreach (Users uuu in us)//使用遍历将us集合中的数据全部打印
                                {
                                    Console.WriteLine(uuu.Ids + "\t" + uuu.UserName + "\t" + uuu.PassWord + "\t" + uuu.NickName + "\t" + (uuu.Sex ? "男" : "女") + "\t" + Convert.ToDateTime(uuu.Birthday).ToShortDateString() + "\t" + uuu.Nation + "\t" + uuu.Class);
                                }
                            }
                            else//users集合为空
                            {
                                Console.WriteLine("没有查询任何用户信息!");
                                break;
                            }
                        }
                    }
                }
                else if (code == "2")//添加
                {
                    for (; ; )
                    {
                        Console.Write("请输入想要添加的用户名(输入#返回):");
                        string user = Console.ReadLine();
                        if (user=="#")
                        {
                            break;
                        }
                        else if(!(new UsersData().Select(user)))//如果数据库中没有此用户
                        {
                            Users u = new UsersData().enter();//录入用户除用户名以外的所有信息,并储存到u中
                            u.UserName = user;//将刚才的用户名录入到u中
                            bool ok = new UsersData().Insert(u);
                            if (ok)
                            {
                                Console.WriteLine("添加数据成功!");
                                continue;
                            }
                            else
                                Console.WriteLine("添加失败!");
                        }
                        else//数据库中已有此用户名
                        {
                            Console.Write("输入用户名已存在,请重新输入!");
                            continue;
                        }
                    }
                }
                else if (code == "3")//删除
                {
                    for (; ; )
                    {
                        Console.Write("请输入想要删除的用户名(输入#返回):");
                        string user = Console.ReadLine();
                        if(user=="#")
                        {
                            break;
                        }
                        else if (new UsersData().Select(user))
                        {
                            Users u = new UsersData().SelectOne(user);
                            Console.WriteLine("============================数据信息==============================");
                            Console.WriteLine("序号\t用户名\t\t密码\t昵称\t性别\t生日\t\t民族\t班级");
                            Console.WriteLine(u.Ids + "\t" + u.UserName + "\t" + u.PassWord + "\t" + u.NickName + "\t" + (u.Sex ? "男" : "女") + "\t" + Convert.ToDateTime(u.Birthday).ToShortDateString() + "\t" + u.Nation + "\t" + u.Class);
                            for (; ; )
                            {
                                Console.Write("是否确定删除此条数据(Y/N):");
                                string yn = Console.ReadLine();
                                if (yn.ToUpper() == "Y")
                                {
                                    bool ok = new UsersData().Delete(user);
                                    if (ok)
                                    {
                                        Console.WriteLine("删除成功!");
                                        break;
                                    }
                                    else
                                    {
                                        Console.WriteLine("删除失败!");
                                        break;
                                    }
                                }
                                else if (yn.ToUpper() == "N")
                                {
                                    Console.WriteLine("已取消删除。");
                                    break;
                                }
                                else
                                {
                                    Console.Write("输入有误,请重新输入!");
                                    continue;
                                }
                            }
                        }
                        else
                        {
                            Console.Write("输入用户名不存在,请重新输入!");
                            continue;
                        }
                    }
                }
                else if (code == "4")//修改
                {
                    for (; ; )
                    {
                        Console.Write("请输入想要修改的用户名(输入#返回):");
                        string user = Console.ReadLine();
                        if(user=="#")
                        {
                            break;
                        }
                        else if(new UsersData().Select(user))
                        {
                            Users u = new UsersData().SelectOne(user);
                            Console.WriteLine("============================数据信息==============================");
                            Console.WriteLine("序号\t用户名\t\t密码\t昵称\t性别\t生日\t\t民族\t班级");
                            Console.WriteLine(u.Ids + "\t" + u.UserName + "\t" + u.PassWord + "\t" + u.NickName + "\t" + (u.Sex ? "男" : "女") + "\t" + Convert.ToDateTime(u.Birthday).ToShortDateString() + "\t" + u.Nation + "\t" + u.Class);
                            for (; ; )
                            {
                                Console.Write("是否确定修改此条数据(Y/N):");
                                string yn = Console.ReadLine();
                                if(yn.ToUpper()=="Y")
                                {
                                    Users us = new UsersData().enter();
                                    us.UserName = user;
                                    bool ok = new UsersData().Update(us);
                                    if (ok)
                                    {
                                        Console.WriteLine("修改成功!");
                                        break;
                                    }
                                    else
                                    {
                                        Console.WriteLine("修改失败!");
                                        break;
                                    }
                                }
                                else if (yn.ToUpper() == "N")
                                {
                                    Console.WriteLine("已取消修改。");
                                    break;
                                }
                                else
                                {
                                    Console.Write("输入有误,请重新输入!");
                                    continue;
                                }
                            }
                        }
                        else
                        {
                            Console.Write("输入用户名不存在,请重新输入!");
                            continue;
                        }
                    }
                }
                else
                {
                    Console.WriteLine("输入操作序号有误,请重新输入!");
                    continue;
                }
            }
        }
    }
}

实体类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 数据库操作.App_Code
{
    public class Users
    {
        private int _Ids;
        /// <summary>
        /// 用户ID
        /// </summary>
        public int Ids
        {
            get { return _Ids; }
            set { _Ids = value; }
        }
        private string _UserName;
        /// <summary>
        /// 用户名
        /// </summary>
        public string UserName
        {
            get { return _UserName; }
            set { _UserName = value; }
        }
        private string _PassWord;
        /// <summary>
        /// 密码
        /// </summary>
        public string PassWord
        {
            get { return _PassWord; }
            set { _PassWord = value; }
        }
        private string _NickName;
        /// <summary>
        /// 昵称
        /// </summary>
        public string NickName
        {
            get { return _NickName; }
            set { _NickName = value; }
        }
        private bool _Sex;
        /// <summary>
        /// 性别
        /// </summary>
        public bool Sex
        {
            get { return _Sex; }
            set { _Sex = value; }
        }
        private DateTime _Birthday;
        /// <summary>
        /// 生日
        /// </summary>
        public DateTime Birthday
        {
            get { return _Birthday; }
            set { _Birthday = value; }
        }
        private string _Nation;
        /// <summary>
        /// 民族
        /// </summary>
        public string Nation
        {
            get { return _Nation; }
            set { _Nation = value; }
        }
        private string _Class;
        /// <summary>
        /// 班级
        /// </summary>
        public string Class
        {
            get { return _Class; }
            set { _Class = value; }
        }
    }
}

数据访问类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;

namespace 数据库操作.App_Code
{
    public class UsersData
    {
        SqlConnection conn = null;
        SqlCommand cmd = null;
        public UsersData()
        {
            conn=new SqlConnection("server=.;database=Data0928;user=sa;pwd=123");
            cmd=conn.CreateCommand();
        }
        /// <summary>
        /// 查询所有数据
        /// </summary>
        /// <returns></returns>
        public List<Users> Select()
        {
            List<Users> ud = new List<Users>();
            cmd.CommandText = "select ids,UserName,PassWord,NickName,Sex,Birthday,(select NationName from Nation where NationCode=Users.Nation) as ‘Nation‘ ,ClassName as ‘Class‘ from Users join Class on Class.ClassCode=Users.Class";
            conn.Open();
            SqlDataReader rd = cmd.ExecuteReader();
            if(rd.HasRows)
            {
                while(rd.Read())
                {
                    Users user = new Users();
                    user.Ids =Convert.ToInt32(rd["ids"]);
                    user.UserName = rd["UserName"].ToString();
                    user.PassWord = rd["PassWord"].ToString();
                    user.NickName = rd["NickName"].ToString();
                    user.Sex = Convert.ToBoolean(rd["Sex"]);
                    user.Birthday = Convert.ToDateTime(rd["Birthday"]);
                    user.Nation = rd["Nation"].ToString();
                    user.Class = rd["Class"].ToString();
                    ud.Add(user);
                }
            }
            conn.Close();
            return ud;
        }
        /// <summary>
        /// 查询多个用户的数据
        /// </summary>
        /// <param name="users"></param>
        /// <returns></returns>
        public List<Users> Select(List<string> users)
        {
            List<Users> us = new List<Users>();
            int count = users.Count();
            for (int i = 0; i < count; i++)
            {
                cmd.CommandText = "select ids,UserName,PassWord,NickName,Sex,Birthday,(select NationName from Nation where NationCode=Users.Nation) as ‘Nation‘ ,ClassName as ‘Class‘ from Users join Class on Class.ClassCode=Users.Class where [email protected]";
                cmd.Parameters.Clear();
                cmd.Parameters.AddWithValue("@uname", users[i].ToString());
                conn.Open();
                SqlDataReader rd = cmd.ExecuteReader();
                if (rd.HasRows)
                {
                    while (rd.Read())
                    {
                        Users user = new Users();
                        user.Ids = Convert.ToInt32(rd["ids"]);
                        user.UserName = rd["UserName"].ToString();
                        user.PassWord = rd["PassWord"].ToString();
                        user.NickName = rd["NickName"].ToString();
                        user.Sex = Convert.ToBoolean(rd["Sex"]);
                        user.Birthday = Convert.ToDateTime(rd["Birthday"]);
                        user.Nation = rd["Nation"].ToString();
                        user.Class = rd["Class"].ToString();
                        us.Add(user);
                    }
                }
                conn.Close();
            }
            return us;
        }

        /// <summary>
        /// 判断有无此用户名
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public bool Select(string name)
        {
            bool has =false;
            cmd.CommandText="select * from Users where [email protected]";
            cmd.Parameters.Clear();
            cmd.Parameters.AddWithValue("@user",name);
            conn.Open();
            SqlDataReader rd = cmd.ExecuteReader();
            if(rd.HasRows)
            {
                has = true;
            }
            conn.Close();
            return has;
        }

        /// <summary>
        /// 查询单行数据并返回Users对象
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public Users SelectOne(string name)
        {
            Users user = new Users();
            cmd.CommandText = "select ids,UserName,PassWord,NickName,Sex,Birthday,(select NationName from Nation where NationCode=Users.Nation) as ‘Nation‘ ,ClassName as ‘Class‘ from Users join Class on Class.ClassCode=Users.Class where [email protected]";
            cmd.Parameters.Clear();
            cmd.Parameters.AddWithValue("@a",name);
            conn.Open();
            SqlDataReader rd = cmd.ExecuteReader();
            if (rd.HasRows)
            {
                while (rd.Read())
                {
                    user.Ids = Convert.ToInt32(rd["ids"]);
                    user.UserName = rd["UserName"].ToString();
                    user.PassWord = rd["PassWord"].ToString();
                    user.NickName = rd["NickName"].ToString();
                    user.Sex = Convert.ToBoolean(rd["Sex"]);
                    user.Birthday = Convert.ToDateTime(rd["Birthday"]);
                    user.Nation = rd["Nation"].ToString();
                    user.Class = rd["Class"].ToString();
                }
            }
            conn.Close();
            return user;
        }

        /// <summary>
        /// 插入数据
        /// </summary>
        /// <param name="u"></param>
        /// <returns></returns>
        public bool Insert(Users u)
        {
            bool ok = false;
            int count = 0;
            cmd.CommandText = "insert into Users values(@a,@b,@c,@d,@e,@f,@g)";
            cmd.Parameters.Clear();
            cmd.Parameters.AddWithValue("@a", u.UserName);
            cmd.Parameters.AddWithValue("@b", u.PassWord);
            cmd.Parameters.AddWithValue("@c", u.NickName);
            cmd.Parameters.AddWithValue("@d", u.Sex);
            cmd.Parameters.AddWithValue("@e", u.Birthday);
            cmd.Parameters.AddWithValue("@f", u.Nation);
            cmd.Parameters.AddWithValue("@g", u.Class);
            try
            {
                conn.Open();
                count = cmd.ExecuteNonQuery();
            }
            catch
            {
                ok = false;
            }
                conn.Close();
            if (count > 0)
                ok = true;

            return ok;
        }

        /// <summary>
        /// 获取一个Users除用户名以外的数据
        /// </summary>
        /// <returns></returns>
        public Users enter()
        {
            Users u = new Users();
            for (; ; )
            {
                Console.Write("请输入密码(6到18位):");
                string pwd1 = Console.ReadLine();
                if (pwd1.Length >= 6 && pwd1.Length <= 18)
                {
                    u.PassWord = pwd1;
                    break;
                }
                else
                {
                    Console.WriteLine("密码长度不正确,请重新输入!");
                    continue;
                }
            }
            Console.Write("请输入昵称:");
            u.NickName= Console.ReadLine();
            for (; ; )
            {
                Console.Write("请输入性别(请输入男女或者0、1):");
                string sex1 = Console.ReadLine();
                if (sex1 == "0" || sex1 == "女")
                {
                    u.Sex = false;
                    break;
                }
                else if (sex1 == "男" || sex1 == "1")
                {
                    u.Sex = true;
                    break;
                }
                else
                {
                    Console.WriteLine("性别输入有误,请重新输入!");
                    continue;
                }
            }
            for (; ; )
            {
                Console.Write("请输入生日:");
                try
                {
                    u.Birthday = DateTime.Parse(Console.ReadLine());
                    break;
                }
                catch
                {
                    Console.WriteLine("生日日期输入有误,请重新输入!");
                    continue;
                }
            }
            for (; ; )
            {
                Console.Write("请输入民族:");
                string nation1 = Console.ReadLine();
                if (nation1 == "汉族" || nation1 == "汉")
                {
                    u.Nation = "N001";
                    break;
                }
                else if (nation1 == "满族" || nation1 == "满")
                {
                    u.Nation = "N002";
                    break;
                }
                else if (nation1 == "藏族" || nation1 == "藏")
                {
                    u.Nation = "N003";
                    break;
                }
                else if (nation1 == "彝族" || nation1 == "彝")
                {
                    u.Nation = "N004";
                    break;
                }
                else
                {
                    Console.WriteLine("输入民族有误,请重新输入!");
                    continue;
                }
            }
            for (; ; )
            {
                Console.Write("请输入班级:");
                string cla1 = Console.ReadLine();
                if (cla1 == "一班" || cla1 == "一")
                {
                    u.Class= "C001";
                    break;
                }
                else if (cla1 == "二班" || cla1 == "二")
                {
                    u.Class = "C002";
                    break;
                }
                else if (cla1 == "三班" || cla1 == "三")
                {
                    u.Class = "C003";
                    break;
                }
                else if (cla1 == "四班" || cla1 == "四")
                {
                    u.Class = "C004";
                    break;
                }
                else
                {
                    Console.WriteLine("输入班级有误,请重新输入!");
                    continue;
                }
            }
            return u;
        }

        /// <summary>
        /// 通过用户名删除一条数据
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public bool Delete(string name)
        {
            bool ok = false;
            cmd.CommandText = "delete from Users where [email protected]";
            cmd.Parameters.Clear();
            cmd.Parameters.AddWithValue("@a",name);
            conn.Open();
            int i = cmd.ExecuteNonQuery();
            conn.Close();
            if (i > 0)
                ok = true;
            else
                ok = false;

            return ok;
        }

        /// <summary>
        /// 修改数据
        /// </summary>
        /// <param name="u"></param>
        /// <returns></returns>
        public bool Update(Users u)
        {
            bool ok = false;
            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("@a",u.PassWord);
            cmd.Parameters.AddWithValue("@b", u.NickName);
            cmd.Parameters.AddWithValue("@c", u.Sex);
            cmd.Parameters.AddWithValue("@d", u.Birthday);
            cmd.Parameters.AddWithValue("@e", u.Nation);
            cmd.Parameters.AddWithValue("@f", u.Class);
            cmd.Parameters.AddWithValue("@g", u.UserName);
            conn.Open();
            int i = cmd.ExecuteNonQuery();
            conn.Close();
            if (i > 0)
                ok = true;
            else
                ok = false;

            return ok;
        }
    }
}

时间: 2024-10-25 11:00:15

综合防攻击、实体类、数据访问类进行的练习的相关文章

2017-4-20实体类,数据访问类.字符串攻击.防攻击

程序分三层:界面层.业务逻辑层.数据访问层 这里主要操作的是数据访问层,数据访问层又分为: 1.实体类 2.数据访问类 存放位置:APP_Code文件中 一.实体类 最简单的封装把数据库的表名变成类的类名把数据库的每一个列,变为实体类中的成员变量和属性列名与属性名一致 有几行就有几个实体类 这是一个简单的实体类:  实体类 二.数据访问类 将某个表的数据库操作写成一个一个方法,放入到此类中供外部调用 这是一个数据访问类:  数据访问类 三.字符串攻击,防攻击 字符串攻击: 主要利用获取需用户输入

实体类,数据访问类.字符串攻击.防攻击

程序分三层:界面层.业务逻辑层.数据访问层 这里主要操作的是数据访问层,数据访问层又分为: 1.实体类 2.数据访问类 存放位置:APP_Code文件中 一.实体类 最简单的封装把数据库的表名变成类的类名把数据库的每一个列,变为实体类中的成员变量和属性列名与属性名一致 有几行就有几个实体类 这是一个简单的实体类: using System; using System.Collections.Generic; using System.Linq; using System.Text; namesp

2017-4-21 字符串攻击 防御 实体类 数据访问类 属性扩展 三层架构开发

(一)防止sql数据库字符串注入攻击: 1.字符串注入攻击实在填写内容是,插入的sql语句,对数据库进行的操作 数据库的攻击就是插入新的sql语句,并对后面的语句进行注销:');update Students set Sname='';-- 2.防止字符串注入攻击: cmd.CommandText = "update Student set Sname = @a",   ----  用占位符进行占位,这样在攻击的时候就会吧攻击的内容当成sql语句内容直接插入到数据库 cmd.Param

实体类,数据访问类应用

一,表中某个数据进行重新排序 (1)数据访问类 using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Text; namespace ConsoleApplication2.App_Code { public class StudentsData { SqlConnection conn = null; SqlCommand cmd

实体类 数据访问类 函数

实体类:封装封装一个类,类名与数据库表名一致成员变量名与列名一致,多一个下划线成员变量封装完的属性,就会与数据表中的列名一致 每一行数据都可以存成一个对象,操作这个对象,就相当于对某一行数据进行整体操作 数据访问类:就是将对数据库的一些操作,单独写到一个类中,封成一些方法,等待调用 结构看起来会非常清晰 函数:1.有参有反public 数据类型 函数名(数据类型 参数名){ return 数据类型;} 2.有参无反public void 函数名(数据类型 参数名){ } 3.无参无反public

ADO.NET 【实体类】【数据访问类】

认识分层结构,分层式结构是最常见,也是最重要的一种结构. 三层架构(3-tier architecture) 界面层(User Interface layer) 主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问. 业务逻辑层(Business Logic Layer)主要是针对具体的问题的操作,也可以理解成对数据层的操作 数据访问层(Data access layer)主要是对非原始数据(数据库或者文本文件等存放数据的形式)的操作层 数据访问层包括   实体类 数据访问类 优点

字符串攻击、防攻击、实体类、数据访问类

字符串攻击: 主要利用获取需用户输入的字符串时,通过输入精心编制的含有某种指令的字符串,从而对数据库进行攻击性操作. 防攻击: 例 cmd.CommandText = "update Users set [email protected],[email protected],[email protected],[email protected],[email protected],[email protected] where [email protected]"; cmd.Param

字符串攻击、防攻击、实体类、数据访问类--2016年11月29日

防止SQL数据库字符串注入攻击 SQL数据库字符串注入攻击:需要使用cmd.Parameters这个集合占位符: @key 代表这个位置用这个占位符占住了 Parameters这个集合中将此占位符所代表的数据补全 cmd.Parameters.Clear(); --添加占位符数据之前,要清空此集合cmd.Parameters.Add("@pwd", Pwd); --占位符内容填充cmd.Parameters.Add("@nname",Nname);cmd.Param

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

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