数据访问-----ADO.NET 练习2

一、向Info中插入数据。
1.从界面输入信息。
2.输入内容的检查:基本格式的检查,主外键的检查。
3.执行插入

class Program
    {
        //定义常量
        public const string CONNECTIONSTRING = "server=.;database=mydb;uid=sa;pwd=5587725";
        //检查格式
        public static bool check(string ColumnName,string value)
        {
            if (ColumnName=="sex")
            {
                if (value=="0"||value=="1")
                {
                    return true;
                }
                else
                {
                    return false;
                    Console.WriteLine("输入的性别格式不正确");
                }
            }
            else if (ColumnName=="Birthday")
            {
                try
                {
                    Convert.ToDateTime(value);
                    return true;
                }
                catch
                {

Console.WriteLine("生日格式不正确");
                    return false;
                }
            }
            else
            {
                return true;
            }
        }
        //检查主键
        public static bool checkPK(string pk)
        {
            bool HasPk = true;
            SqlConnection conn = new SqlConnection(CONNECTIONSTRING);
            conn.Open();
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = "select * from info where code=‘"+pk+"‘";
            SqlDataReader dr = cmd.ExecuteReader();
            if (dr.HasRows)
            {
                HasPk = false;
                Console.WriteLine("主键已存在");
            }
            else
            {
                HasPk = true;
            }
            conn.Close();
            return HasPk;
        }
        //检查民族
        public static bool checkNation(string nation)
        {
            bool HasNation = true;
            SqlConnection conn = new SqlConnection(CONNECTIONSTRING);
            conn.Open();
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = "select * from info where nation=‘"+nation+"‘";
            SqlDataReader dr = cmd.ExecuteReader();
            if (dr.HasRows)
            {
                HasNation = true;
            }
            else
            {
                Console.WriteLine("民族代号输入不正确");
                HasNation = false;
            }
            conn.Close();
            return HasNation;
        }
        //检查综合
        public static bool checkPut(string code,string sex,string nation,string birthday)
        {
            //检查
            //1.对输入的数据格式检查
            bool isOK = true;
            bool isOK1 = check("Sex", sex);
            bool isOK2 = check("Birthday", birthday);
            //2.对主外键的检查
            bool isOK3 = checkPK(code);
            bool isOK4 = checkNation(nation);
            isOK = isOK && isOK1 && isOK2 && isOK3 && isOK4;
            return isOK;
        }
        //插入
        public static void ADDinfo(string code,string name,string sex,string nation,string birthday)
        {
            SqlConnection conn = new SqlConnection(CONNECTIONSTRING);
            conn.Open();
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = "insert into info values(‘"+code+"‘,‘"+name+"‘,‘"+sex+"‘,‘"+nation+"‘,‘"+birthday+"‘)";
            cmd.ExecuteNonQuery();
            conn.Close();
        }

static void Main(string[] args)
        {
            //输入
            Console.Write("代号:");
            string code = Console.ReadLine();
            Console.Write("姓名:");
            string name = Console.ReadLine();
            Console.Write("性别(0-女,1-男):");
            string sex = Console.ReadLine();
            Console.Write("民族:");
            string nation = Console.ReadLine();
            Console.Write("生日:");
            string birthday = Console.ReadLine();
          
            //检查
            bool isOK = checkPut(code,sex,nation,birthday);
            //插入
            if(isOK==true)
            {
                 ADDinfo(code, name, sex, nation, birthday);
            }
        }
    }

二、从Info表中删除数据。
1.显示信息
2.输入要删除的主键
3.检查输入的主键是否存在。
4.执行删除(外键的情况——数据库中使用级联删除解决;写代码先删从表最后删除主表来解决。)
5.显示信息

class Program
    {
        public const string CONCNNECTIONSTRING = "server=.;database=mydb;uid=sa;pwd=5587725";
        //显示所有人员信息
        public static string GETnation(string code)
        {
            string str = "";
            SqlConnection conn = new SqlConnection(CONCNNECTIONSTRING);
            conn.Open();
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = "select *from nation where code=‘"+code+"‘";
            SqlDataReader dr = cmd.ExecuteReader();
            if (dr.HasRows)
            {
                dr.Read();
                str = dr["name"].ToString();
            }
            else
            {
                str = "";
            }
            conn.Close();
            return str;
        }
        public static void show()
        {
            SqlConnection conn = new SqlConnection(CONCNNECTIONSTRING);
            conn.Open();
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText="select * from info";
            SqlDataReader dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                string code = dr["code"].ToString() ;
                string name = dr["name"].ToString() ;
                string sex = ((bool)dr["sex"])?"男":"女" ;
                string nation = GETnation(dr["nation"].ToString()) ;
                string birthday = ((DateTime)dr["birthday"]).ToString("yyyy年MM月dd日") ;
                Console.WriteLine(code+ "\t"+name+ "\t"+sex+ "\t"+nation+ "\t"+birthday+ "\n");
                
            }
            conn.Close();
        }
        //检查主键是否存在
        public static bool checkPK(string pk)
        {
            bool HasPK = true;
            SqlConnection conn = new SqlConnection(CONCNNECTIONSTRING);
            conn.Open();
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = "select * from info where code=‘"+pk+"‘";
            SqlDataReader dr = cmd.ExecuteReader();
            HasPK = dr.HasRows;
            conn.Close();
            return HasPK;
        }
        //删除
        public static void Deleteinfo(string pk)
        {
            SqlConnection conn = new SqlConnection(CONCNNECTIONSTRING);
            conn.Open();
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = "delete from work where infocode=‘" + pk + "‘";
            cmd.ExecuteNonQuery();
            cmd.CommandText = "delete from family where infocode=‘" + pk + "‘";
            cmd.ExecuteNonQuery();
            cmd.CommandText = "delete from info where code=‘"+pk+"‘";
            cmd.ExecuteNonQuery();
            conn.Close();
        }
        static void Main(string[] args)
        {
            //显示
            show();
            //输入要删除的主键
            Console.WriteLine("请输入你要删除的人员代码:");
            string code = Console.ReadLine();
            //检查输入的主键是否存在
            bool isOK = checkPK(code);
           
            //删除
            if (isOK==true)
            {
                Deleteinfo(code);
                Console.WriteLine("删除成功");
            }
            else
            {
                Console.WriteLine("找不到要删除的人员代号,删除失败,请重新检查要删除的人员代号。");
            }
            //显示
            show();
            Console.ReadLine();
        }

时间: 2024-10-11 01:13:57

数据访问-----ADO.NET 练习2的相关文章

数据访问-----ADO.NET 练习1

数据访问:——ADO.NET 1.创建链接2.创建与执行命令——SQL3.读取或准备相关数据 一.命名空间:using System.Data;using System.Data.SqlClient; 二.链接类 - SqlConnection——创建与数据库的链接(一)链接字符串: 连哪台电脑,连电脑上的哪个数据库,用户名是什么,密码server=目标服务器的IP地址;database=数据库名;uid=数据库的登录名;pwd=数据库的登录密码server=.;(代表本机)database=m

数据访问-----ADO.NET 小结和练习

ADO.NET两个命名空间,三个类.一.两个命名空间:using System.Data;using System.Data.SqlClient; 二.三个类:SqlConnection    SqlCommand    SqlDataReader (一)SqlConnection链接类1.构造链接字符串的写法:server=服务器IP或服务器名;database=数据库名;uid=用户名;pwd=密码server=.;database=mydb;uid=sa;pwd=123Data Sourc

ADO.NET数据访问技术概览

1. 以数据为中心的应用程序设计 1.1. ADO.NET 支持下列的存储类型? 无结构? 有结构, 无层次的数据 – 以逗号分离的数据(CSV) 文件.Microsoft Excel 电子表格.Microsoft Exchange 文件.Active Directory 文件等? 有层次的数据 – XML 文档等? 关系型数据库 – SQL Server.Oracle.Access 等. 1.2. 连接环境? 连接环境是指用户在这种环境下始终保持与数据源的连接? 优点 – 环境易于实施安全控制

ADO.NET编程之美----数据访问方式(面向连接与面向无连接)

最近,在学习ADO.NET时,其中提到了数据访问方式:面向连接与面向无连接.于是,百度了一下,发现并没有很好的资料,然而,在学校图书馆中发现一本好书(<ASP.NET MVC5 网站开发之美>,当然,我不是做广告的,只因它确实还可以),里面关于二者之间的区别及原理讲得很清楚,下面我们就进入主题.今天心情不错.... 我们都知道ADO.NET提供了对数据库或外部数据源的数据访问接口,它本身实现了面向连接与面向无连接的数据访问方式.面向连接是以数据库连接为基础的,在打开数据库连接后,将数据访问指令

ADO面向对象使用(实体类、数据访问类、范型集合)

ADO面向对象使用: !!!!!在其它文件夹下创建新类,加public!再考虑是不是引用数据库命名空间和其它类的命名空间!是否需要将构造函数写出来,将数据库的两个类实例化!!!!! 实体类:就是封装,将数据库中的表封装成同名的类,里面的成员变量与表里面的列是对应的,一个对象就代表数据库中一行数据: 字段扩展:查询关联的外键表数据,只读! 数据访问类:就是对于实体类对应的数据库进行操作的,就是写方法! 泛型集合: List<T> list = new List<T>(); T代表的就

ADO.NET数据访问技术

就是将C#和MSSQLl连接起来的纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中,也可以将数据库中的数据提取到内存中供程序调用.是所有数据访问技术的基础. ADO.NET使用一些ADO对象,如Connection和Command对象,也引入了一些新对象.关键的新对象包括DataSet,DataReader,和DataAdapter. Connections. 用于连接和管理针对数据库的事务. Commands. 用于发出针对数据库的SQL指令. DataReaders. 用于从SQ

[翻译]比较ADO.NET中的不同数据访问技术(Performance Comparison:Data Access Techniques)

Performance Comparison: Data Access Techniques Priya DhawanMicrosoft Developer Network January 2002 原文链接:https://msdn.microsoft.com/en-us/library/ms978388.aspx 概要:在典型的应用环境中,比较不同数据访问技术的表现性能.适用于Microsoft .NET Framework Beta2 和 Microsoft SQL Server 2000

【2017-04-20】Ado.Net与面向对象结合架构中的数据访问层(实体类,数据访问类)

开发项目三层架构:界面层.业务逻辑层.数据访问层 今天学习一下数据访问层,分为实体类和数据访问类 所有的类放在App_Code这个文件夹下边.养成一个好的习惯. 一.实体类 数据库中的表映射为一个类,类名与表名一致.表中的每一列,都为该类下的成员变量和属性也就是最简单的封装 把数据库中的表名变为类的类名. 把数据库中的每一个列,变为实体类中的成员变量和属性 列名与属性名一致.成员变量名:在列名前边加上下划线.因为在外部访问只能访问到属性,为了看起来一致. using System; using

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

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