ADO操作 练习

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

namespace ado操作练习
{
    class Program
    {
        static void Main(string[] args)
        {
            //建立数据库连接类
            //建立数据库查询类
            //查询
            //添加
            //--1、防字符串注入攻击
            //--2、添加的数据增加相应的限制
            //--3、学号自动生成
            //修改
            //--1、防字符串注入攻击
            //--2、用户修改后的数据增加相应的限制
            //删除
            SqlConnection conn = new SqlConnection("server=.;database=zuoye;user=sa;pwd=123");
            SqlCommand cmd = conn.CreateCommand();
            while (true)
            {
                #region 查询
                //查询
                cmd.CommandText = "select *from AdoStudent";
                Console.WriteLine("学号     姓名     性别      生日           成绩");
                conn.Open();
                SqlDataReader dr = cmd.ExecuteReader();
                if (dr.HasRows)
                {
                    while (dr.Read())
                    {
                        Console.WriteLine(dr["code"].ToString() + dr["name"].ToString() + (Convert.ToBoolean(dr["sex"]) ? "男" : "女") + Convert.ToDateTime(dr["birthday"]).ToString("0.##") + Convert.ToInt32(dr["score"]));
                    }
                }
                conn.Close();
                #endregion

                //询问接下来的操作
                Console.Write("将要进行的操作(1:添加,2:修改,3:删除):");
                int caozuo = 0;
                caozuo = Convert.ToInt32(Console.ReadLine());

                //操作开始

                #region  添加

                //添加
                if (caozuo == 1)
                {
                    //自动生成学号
                    //集合——查询——截取——生成
                    ArrayList codes = new ArrayList();
                    cmd.CommandText = "select *from AdoStudent";
                    conn.Open();
                    dr = cmd.ExecuteReader();
                    if (dr.HasRows)
                    {
                        while (dr.Read())
                        {
                            int shu = Convert.ToInt32(dr["code"].ToString().Substring(1));
                            codes.Add(shu);
                        }
                    }
                    conn.Close();
                    codes.Sort();//将codes集合里的数字按从大到小的顺序排列
                    string newcode = "s" + Convert.ToInt32(codes[(codes.Count - 1)]);
                    //输入要添加的学生的信息
                    Console.WriteLine("新添加学生的学号:" + newcode);
                    //学生姓名的限制:不能为空,如果输入错误就要重新输入。
                    string name = "";
                    while (true)
                    {
                        Console.Write("请输入学生的姓名:");
                        name = Console.ReadLine();
                        if (name != "")
                        {
                            break;
                        }
                        else
                        {
                            Console.WriteLine("姓名不能为空!");
                        }
                    }
                    //性别限制:只能输入男或者女,如果输入错误就重新输入。
                    string sex = "";
                    bool panduan = false;
                    while (true)
                    {
                        Console.Write("请输入学生性别:");
                        sex = Console.ReadLine();
                        if (sex == "男")
                        {
                            panduan = true;
                            break;
                        }
                        else if (sex == "女")
                        {
                            panduan = false;
                            break;
                        }
                        else
                        {
                            Console.WriteLine("性别输入有误!");
                        }
                    }
                    //生日限制:try一下,看输入的可不可以转换成datetime类型
                    DateTime birthday = DateTime.Now;
                    while (true)
                    {
                        Console.Write("请输入学生生日:");
                        try
                        {
                            birthday = Convert.ToDateTime(Console.ReadLine());
                            break;
                        }
                        catch
                        {
                            Console.WriteLine("生日输入有误!");
                        }
                    }
                    //成绩限制:0<score<=100
                    decimal score = 0m;
                    while (true)
                    {
                        Console.Write("请输入学生成绩:");
                        score = Convert.ToDecimal(Console.ReadLine());
                        if (score >= 0 && score <= 100)
                        {
                            break;
                        }
                        else
                        {
                            Console.WriteLine("成绩输入有误!");
                        }
                    }
                    cmd.CommandText = "insert into AdoStudent values(@newcode,@name,@sex,@birthday,@score)";
                    cmd.Parameters.Clear();
                    cmd.Parameters.Add("@newcode", newcode);
                    cmd.Parameters.Add("@name", name);
                    cmd.Parameters.Add("@sex", sex);
                    cmd.Parameters.Add("@birthday", birthday);
                    cmd.Parameters.Add("@score", score);

                    conn.Open();
                    cmd.ExecuteNonQuery();
                    conn.Close();
                    Console.Clear();
                    Console.WriteLine("添加成功!");
                    //continue;
                }

                #endregion 修改
                //修改
                else if (caozuo == 2)
                {
                    while (true)
                    {
                        //首先要确定这个学号对应的学生信息存不存在
                        bool has = false; //判断是否有这个学生
                        Console.Write("请输入要修改的学生编号:");
                        string xiugai = Console.ReadLine();
                        cmd.CommandText = "select *from AdoStudent where code =‘" + xiugai + "‘";
                        conn.Open();
                        dr = cmd.ExecuteReader();
                        if (dr.HasRows)
                        {
                            //此处只需要查询一遍有无这个学号即可
                            has = true;
                        }
                        conn.Close();
                        if (has)
                        {
                            Console.WriteLine("已查询到此学生信息,请继续修改操作");
                            string name = "";
                            while (true)
                            {
                                Console.Write("请输入学生的姓名:");
                                name = Console.ReadLine();
                                if (name != "")
                                {
                                    break;
                                }
                                else
                                {
                                    Console.WriteLine("姓名不能为空!");
                                }
                            }
                            //性别限制:只能输入男或者女,如果输入错误就重新输入。
                            string sex = "";
                            bool panduan = false;
                            while (true)
                            {
                                Console.Write("请输入学生性别:");
                                sex = Console.ReadLine();
                                if (sex == "男")
                                {
                                    panduan = true;
                                    break;
                                }
                                else if (sex == "女")
                                {
                                    panduan = false;
                                    break;
                                }
                                else
                                {
                                    Console.WriteLine("性别输入有误!");
                                }
                            }
                            //生日限制:try一下,看输入的可不可以转换成datetime类型
                            DateTime birthday = DateTime.Now;
                            while (true)
                            {
                                Console.Write("请输入学生生日:");
                                try
                                {
                                    birthday = Convert.ToDateTime(Console.ReadLine());
                                    break;
                                }
                                catch
                                {
                                    Console.WriteLine("生日输入有误!");
                                }
                            }
                            //成绩限制:0<score<=100
                            decimal score = 0m;
                            while (true)
                            {
                                Console.Write("请输入学生成绩:");
                                score = Convert.ToDecimal(Console.ReadLine());
                                if (score >= 0 && score <= 100)
                                {
                                    break;
                                }
                                else
                                {
                                    Console.WriteLine("成绩输入有误!");
                                }
                            }
                            //修改数据库里的数据
                            cmd.CommandText = "update AdoStudent set [email protected],[email protected],[email protected],[email protected] where code=‘" + xiugai + "‘";
                            //防止字符串注入攻击
                            cmd.Parameters.Clear();
                            cmd.Parameters.Add("@name", name);
                            cmd.Parameters.Add("@sex", sex);
                            cmd.Parameters.Add("@birthday", birthday);
                            cmd.Parameters.Add("@score", score);
                            conn.Open();
                            cmd.ExecuteNonQuery();
                            conn.Close();
                            Console.Clear();
                            Console.WriteLine("修改成功!");
                            //break;//跳出最里面的循环
                        }
                        else
                        {
                            Console.WriteLine("查无此学生信息!");
                        }
                    }
                    //continue;
                }

                #region 删除
                //删除
                else if (caozuo == 3)
                {
                    string isok = "";
                    string shanchu = "";
                    while (true)
                    {
                        //1、让用户输入要删除的学生编号
                        bool has = false; //判断是否有这个学生
                        Console.Write("请输入要删除的学生编号:");
                        shanchu = Console.ReadLine();
                        cmd.CommandText = "select *from AdoStudent where Code =‘" + shanchu + "‘";
                        conn.Open();
                        dr = cmd.ExecuteReader();
                        if (dr.HasRows)
                        {
                            has = true;
                        }
                        conn.Close();
                        //判断有无此学生信息
                        if (has)//有,那么询问用户是否确定删除
                        {
                            Console.Write("已查到此学生信息,是否要删除?输入Y执行删除:");
                            isok = Console.ReadLine();
                            break;
                        }
                        else
                        {
                            Console.WriteLine("无此学生信息,输入有误!");
                        }
                    }
                    //3、执行删除
                    if (isok.ToUpper() == "Y")
                    {
                        cmd.CommandText = "delete from AdoStudent where Code =‘" + shanchu + "‘";
                        conn.Open();
                        cmd.ExecuteNonQuery();
                        conn.Close();
                        Console.Clear();
                        Console.WriteLine("删除成功!");
                        //continue;
                    }
                }
                #endregion
                else
                {
                    Console.WriteLine("输入的操作指令有误!");
                }
                //操作结束
            }
        }
    }
}

防字符串注入攻击:

使用Parameters集合和占位符(例如:@name

例如:

cmd.CommandText = "update AdoStudent set [email protected],[email protected] where code=‘" + xiugai + "‘";
cmd.Parameters.Clear();
cmd.Parameters.Add("@name", name);
cmd.Parameters.Add("@sex", sex);
cmd.Parameters.Add("@birthday", birthday);
cmd.Parameters.Add("@score", score);

时间: 2024-10-07 12:49:06

ADO操作 练习的相关文章

用ADO操作数据库的方法步骤(ZT)

http://www.cppblog.com/changshoumeng/articles/113437.html 学习ADO时总结的一些经验 用ADO操作数据库的方法步骤 ADO接口简介 ADO库包含三个基本接口:_ConnectionPtr接口._CommandPtr接口和_RecordsetPtr接口. _ConnectionPtr接口返回一个记录集或一个空指针. 通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,如一个存储过程.使用_ConnectionPtr接口返回一个

用ADO操作数据库的方法步骤

用ADO操作数据库的方法步骤 学习ADO时总结的一些经验 - 技术成就梦想 - 51CTO技术博客 http://freetoskey.blog.51cto.com/1355382/989218 ADO接口简介 ADO库包含三个基本接口:_ConnectionPtr接口._CommandPtr接口和_RecordsetPtr接口. _ConnectionPtr接口返回一个记录集或一个空指针. 通常使用它来创建一个数据连接或执行一条不返回任何结果的SQL语句,如一个存储过程.使用_Connecti

C#使用ADO操作Excel

1 说明 把excel当成一个数据库,类似于Access数据库来操作. 2 源代码 2.1 Model层 /// <summary> /// 人员信息 /// </summary> public class MPerson { /// <summary> /// 人员姓名 /// </summary> public string PersonName { get; set; } /// <summary> /// 人员家乡 /// </su

vb6异步ADO操作

Private withevents M_Conn as adodb.connection Private CmdFinished as boolean sub somesub AdoCmd.Execute , , adAsyncExecute do while not CmdFinished doevents loop end sub 'Change the CmdFinished value on the connection_ExecuteComplete event and connec

MFC通过ADO操作Access数据库

我在<VC知识库在线杂志>第十四期和第十五期上曾发表了两篇文章--"直接通过ODBC读.写Excel表格文件"和"直接通过DAO读.写Access文件",先后给大家介绍了ODBC和DAO两种数据库访问技术的基本使用方法,这次要给大家介绍的是ADO数据库访问技术的使用方法.ADO(Active Data Object,活动数据对象)实际上是一种基于COM(组件对象模型)的自动化接口(IDispatch)技术,并以OLE DB(对象连接和镶入的数据库)为基础

vc中通过ADO操作数据库

准备工作 (1).引入ADO类 #import "c:\program files\common files\system\ado\msado15.dll" \ no_namespace \ rename ("EOF", "adoEOF") (2).初始化COM 在MFC中可以用AfxOleInit();非MFC环境中用: CoInitialize(NULL); CoUnInitialize(); (3)#import 包含后就可以用3个智能指针

ADO 操作总结

#pragma once #import "C:/Program Files/Common Files/System/ado/msado15.dll" no_namespace rename("EOF","adoEof") #include <string> #include <vector> #ifdef _UNICODE typedef std::wstring _tstring; #else typedef std:

SQL Server 2008 R2——VC++ ADO 操作

==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完整性. 未经作者同意请勿修改(包括本声明),保留法律追究的权利. 未经作者同意请勿用于出版.印刷或学术引用. 本文不定期修正完善,为保证内容正确,建议移步原文处阅读. 本文链接:http://www.cnblogs.com/wlsandwho/p/4352764.html =============

【c#】ADO操作Access的mdb数据库只能读不能修改的解决方法

在使用ACCESS数据库时连接字符串如 string [email protected]"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\Access操作\简易ACCESS数据库\简易ACCESS数据库\学生表.mdb"; 红色标注的部分是要使用绝对路径不然对access不能插入不能修改 另外 执行command字符串时先在t-sql中调试关键字,如表格名称.字段名尽量用[ ]括起来 原文地址:https://www.cnblogs.co