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

  删除数据:

            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 UserName=@uname";
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 PassWord=@pwd,NickName=@nname,Sex=@sex,Birthday=@bir,Nation=@nat where UserName=@uname;";
cmd.Parameters.Clear();
cmd.Parameters.Add("@pwd", Pwd);
cmd.Parameters.Add("@nname", Nname);
cmd.Parameters.Add("@sex", (Sex == "男") ? "" : "");
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); --占位符内容填充

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

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

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

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

  1. ado.net 完整修改删除,攻击防攻击

    完整修改和删除:当你输入了要删除的用户名,先提示有没有此条数据 先查 后删/后改------------ using System; using System.Collections.Generic; ...

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

    一.完整修改和查询 在编写c#语句时需考虑到用户体验,例如在编写修改语句时,需要考虑到输入的内容在数据库中是否能够找到. 中间变量运用. 1.先查 2.执行操作 完整修改语句: bool has = ...

  3. python对MySQL进行添加修改删除以及字符串的操作

    # coding=UTF-8 import MySQLdb def dbDperate(sql,param): "定义数据库的添加,修改和删除操作" #获取数据库的连接对象 con ...

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

    --SQl中--建立ren的数据库,插入一条信息 create database ren go use ren go create table xinxi ( code ) primary key,- ...

  5. ADO.NET 完整的修改和删除

    namespace 完整修改{ class Program { static void Main(string[] args) { bool has = false; Console.Write(&q ...

  6. 使用Discuz!自带参数防御CC攻击以及原理,修改Discuz X 开启防CC攻击后,不影响搜索引擎收录的方法

    这部份的工作,以前花的时间太少. 希望能产生一定的作用. http://www.nigesb.com/discuz-cc-attacker-defence.html http://bbs.zb7.co ...

  7. 9_13学习完整修改和查询&&实体类,数据访问类

    完整修改和查询:中间变量运用. 1.先查 2.执行操作 ---------------------------------------------------- namespace ADO.NET_小 ...

  8. 转:nginx防DDOS攻击的简单配置

    文章来自于: 近期由于工作需要,做了些防DDOS攻击的研究,发现nginx本身就有这方面的模块ngx_http_limit_req_module和ngx_http_limit_conn_module. ...

  9. 增强VPS SSH账号安全:改端口,禁用Root,密钥登录,Denyhosts防暴力攻击

    VPS SSH账号是我们日常管理VPS的主要登入方式,尤其是Root账号,对Linux系统安全至关重要.以前好多站长喜欢用Putty中文版,这实际是别人修改官方Putty汉化而来,这些软件被植入了后门 ...

随机推荐

  1. table表头thead固定

    <html> <head> <meta charset="utf-8"/> <script type="text/javascr ...

  2. HTML a标签 target属性作用

    特殊的目标 有 4 个保留的目标名称用作特殊的文档重定向操作: _blank 浏览器总在一个新打开.未命名的窗口中载入目标文档. _self 这个目标的值对所有没有指定目标的 <a> 标签 ...

  3. Python学习笔记——基础篇【第四周】——迭代器&生成器、装饰器、递归、算法、正则表达式

    目录 1.迭代器&生成器 2.装饰器 a.基本装饰器 b.多参数装饰器 3.递归 4.算法基础:二分查找.二维数组转换 5.正则表达式 6.常用模块学习 #作业:计算器开发 a.实现加减成熟及 ...

  4. [kuangbin带你飞]专题六 最小生成树 POJ 1287 Networking

    最小生成树模板题 跑一次kruskal就可以了 /* *********************************************** Author :Sun Yuefeng Creat ...

  5. LeetCode-448. Find All Numbers Disappeared in an Array C#

    Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and ot ...

  6. [译][待续]Chap1.Using neural nets to recognize handwritten digits

    Chapter1 使用神经网络辨识手写数字 人类的视觉系统是自然界的一大奇迹.试看如下的手写数列: 绝大多数人都能毫不费劲地认出这些数字是504192,而这会让人产生识别数字非常简单的错觉.人类大脑的 ...

  7. echarts样式修改

    本人是查看如下链接: http://down.admin5.com/demo/code_pop/cs/dsj/doc/example/themeDesigner.html# 图示很简洁明了.

  8. svn 中commit时必须填写备注信息如何设置

    在软件开发团队中总是有人忘记添加备注信息,可以通过下面方式进行设置,从而在commit时强制需要填写备注信息. 在服务端选中需要设置的项目进行设置. 选中项目右键,"所以任务"-& ...

  9. vue 相对其他热门 框架 优点 --- 待续

    react vs  vue 1. 处理动画 vue 更有优势 , 这是由于 React 有大量的检查机制 2.性能更高, 在React中,你需要在每个地方去实现 shouldComponentUpda ...

  10. Socket.io 延伸

    项目正好用到了即时通讯功能,于是研究到了webSocket技术,后来发现了可以在web.[Android].[iOS]上同时使用的解决方案,那就是SocketIO.其实现原理啥的不做介绍了,直接贴上I ...