zoukankan      html  css  js  c++  java
  • ADO.NET完整的增、删、改、查

    一、简介 

    1、ado.net是一门数据库访问技术。

    2、类库

    Connection 类(数据库连接类)

    和数据库交互,必须连接它。连接帮助指明数据库服务器、数据库名字、用户名、密码,和连接数据库所需要的其它参数。Connection对象会被Command对象使用,这样就能够知道是在哪个数据源上面执行命令。
    与数据库交互的过程意味着必须指明想要执行的操作。这是依靠Command对象执行的。开发人员使用Command对象来发送SQL语句给数据库。Command对象使用Connection对象来指出与哪个数据源进行连接。开发人员能够单独使用Command对象来直接执行命令,或者将一个Command对象的引用传递给DataAdapter,它保存了一组能够操作下面描述的一组数据的命令

    Command对象(数据库操作类)

    成功与数据建立连接后,就可以用Command对象来执行查询、修改、插入、删除等命令;Command对象常用的方法有ExecuteReader()方法、ExecuteScalar()方法和ExecuteNonQuery()方法;插入数据可用ExecuteNonQuery()方法来执行插入命令。

    DataReader类(数据读取类)

    许多数据操作要求开发人员只是读取一串数据。DataReader对象允许开发人员获得从Command对象的SELECT语句得到的结果。考虑性能的因素,从DataReader返回的数据都是快速的且只是“向前”的数据流。这意味着开发人员只能按照一定的顺序从数据流中取出数据。这对于速度来说是有好处的,但是如果开发人员需要操作数据,更好的办法是使用DataSet。
    二、建立与数据库的连接
     
    1、格式
     
    先引用命名空间using System.Data.SqlClient;

                 //连接字符串。服务器:本地;数据库:Data0216;用户:sa;密码:123 

                  string sql = "server=.;database=Data0216;user=sa;pwd=123;";

                //数据库连接类 SqlConnection conn = new SqlConnection(sql);

                //数据库操作类 SqlCommand cmd = conn.CreateCommand();

                //编写Tsql语句 cmd.CommandText = "insert into Users values('tianqi','1234','王三,'1','2003-2-1','N003')";

                //打开数据库 conn.Open();

                //执行操作 cmd.ExecuteNonQuery();

                //关闭数据库 conn.Close();

    三、完整的数据查询,打印出来。
    复制代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.SqlClient;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                //连接字符串。服务器:本地;数据库:Data0216;用户:sa;密码:123
                string sql = "server=.;database=Data0216;user=sa;pwd=123;";
                //数据库连接类
                SqlConnection conn = new SqlConnection(sql);
                //数据库操作类
                SqlCommand cmd = conn.CreateCommand();
                //编写Tsql语句
                cmd.CommandText = "select *from Users";
                //打开数据库
                conn.Open();
                //执行操作用SqlDataReader类dr接收一下
                SqlDataReader dr = cmd.ExecuteReader();
    
                int count = 0;
                //判断查询结果是否有行(是否有数据)
                if (dr.HasRows)
                {
                    //dr.Read();读取下一行数据,如果有返还true,如果没有返回false。用一个死循环来打印数据,如果读取不到下一行的数据则循环结束。
                    while (dr.Read())
                    {
                        count++;
                        //将读取到该行数据的Ids列提取出来放到字符串ids中
                        string ids = dr["Ids"].ToString();
                        string username = dr["UserName"].ToString();
                        string password = dr["PassWord"].ToString();
                        string nickname = dr["NickName"].ToString();
                        string sex = dr["Sex"].ToString();
                        string birthday = dr["Birthday"].ToString();
                        string nation = dr["Nation"].ToString();
                        Console.WriteLine(ids + "  |  " + username + "  |  " + password + "  |  " + nickname + "  |  " + sex + "  |  " + birthday + "  |  " + nation);
                    }
                }
                Console.WriteLine("一共有" + count + "行数据");
                //关闭数据库
                conn.Close();
                Console.ReadLine();
            }
        }
    }
    复制代码

    四、完整的数据删除,将数据删除成功与否返回给用户

    复制代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.SqlClient;
    
    namespace ConsoleApplication2
    {
        class Program
        {
            static void Main(string[] args)
            {
                string sql = "server=.;database=Data0216;user=sa;pwd=123;";
    
                SqlConnection conn = new SqlConnection(sql);
    
                SqlCommand cmd = conn.CreateCommand();
    
                cmd.CommandText = "delete from Users where UserName='zhangsan';";
    
                conn.Open();
                //执行操作,将受影响行数返回一个int类型接受一下
                int a = cmd.ExecuteNonQuery();
                //如果受影响行数大于0,则删除成功,否则删除失败
                if (a > 0) Console.WriteLine("删除成功,本次共删除" + a + "");
                else Console.WriteLine("删除失败,本次未删除任何数据!");
    
                conn.Close();
                Console.ReadLine();
    
            }
        }
    }
    复制代码
    五、完整的数据修改,先查询数据库中有没有用户要修改的数据。
    复制代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.SqlClient;
    
    namespace ConsoleApplication3
    {
        class Program
        {
            static void Main(string[] args)
            {
                bool has = false;
    
                string sql = "server=.;database=Data0216;user=sa;pwd=123;";
    
                SqlConnection conn = new SqlConnection(sql);
    
                SqlCommand cmd = conn.CreateCommand();
    
                Console.Write("请输入要修改的用户名:");
                string name = Console.ReadLine();
                //先查询一下数据库中是否有用户要修改的这条数据
                cmd.CommandText = "select * from users where username='"+name+"'";
    
                conn.Open();
    
                SqlDataReader dr = cmd.ExecuteReader();
                //如果数据库中有用户要修改的这条数据,给has一个true值
                if (dr.HasRows)
                {
                    has = true;
                }
    
                conn.Close();
                //如果数据库中有用户要删除的这条数据,再提示用户要修改的内容
                if (has == true)
                {
                    Console.WriteLine("已查到此用户");
                    Console.Write("请输入修改后的密码:");
                    string password = Console.ReadLine();
                    Console.Write("请输入修改后的昵称:");
                    string nickname = Console.ReadLine();
                    Console.Write("请输入修改后的性别:");
                    string sex = Console.ReadLine();
                    Console.Write("请输入修改后的生日:");
                    string birthday = Console.ReadLine();
                    Console.Write("请输入修改后的民族:");
                    string nation = Console.ReadLine();
    
                    //修改数据的sql语句
                    cmd.CommandText = "update Users set PassWord='"+password+"',NickName='"+nickname+"',Sex='"+sex+"',Birthday='"+birthday+"',Nation='"+nation+"' where UserName='"+name+"'";
                    //再次打开数据库
                    conn.Open();
                    //用aaa记一下受影响行数
                    int aaa= cmd.ExecuteNonQuery();
                    //关闭数据库
                    conn.Close();
    
                    if (aaa > 0) Console.WriteLine("修改成功");
                    else Console.WriteLine("修改失败");
                }
                    //如果查询不到用户要修改的数据,提示用户无法修改。
                else
                    Console.WriteLine("未查到此用户,无法修改");
    
                Console.ReadLine();
            }
        }
    }
    复制代码

    六、完整的数据添加

    复制代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.SqlClient;
    
    namespace ConsoleApplication4
    {
        class Program
        {
            static void Main(string[] args)
            {
                string name = "";
                string password = "";
                string nickname = "";
                string sex = "";
                string birthday = "";
                string nationcode = "";
    
                string sql = "server=.;database=Data0216;user=sa;pwd=123;";
                SqlConnection conn = new SqlConnection(sql);
                SqlCommand cmd = conn.CreateCommand();
    
                //判断用户名是否被占用且不能为空,如果未被占用且不为空将用户输入的用户名放在name中,跳出循环
                while (true)
                {
                    Console.Write("请输入用户名:");
                    name = Console.ReadLine();
    
    
                    cmd.CommandText = "select *from Users where UserName='" + name + "'";
                    conn.Open();
                    SqlDataReader dr = cmd.ExecuteReader();
    
                    if (!dr.Read() && name.Length != 0)
                    {
                        conn.Close();
                        break;
                    }
                }
    
                //判断密码是否大于6位
                while (true)
                {
                    Console.Write("请输入密码:");
                    password = Console.ReadLine();
                    if (password.Length >= 6)
                    {
                        break;
                    }
                }
                //判断昵称是否为空
                while (true)
                {
                    Console.Write("请输入昵称:");
                    nickname = Console.ReadLine();
                    if (nickname.Length > 0)
                    {
                        break;
                    }
                }
                //判断性别输入,输入男将1记录到数据库中,输入女将0记录到数据库中
                while (true)
                {
                    Console.Write("请输入性别(男/女):");
                    sex = Console.ReadLine();
                    if (sex == "" || sex == "")
                    {
                        if (sex == "")
                            sex = "1";
                        else sex = "0";
                        break;
                    }
                    else
                        Console.WriteLine("输入的格式不正确,请重新输入");
                }
    
                //判断输入的生日格式是否正确
                while (true)
                {
                    Console.Write("请输入生日:");
                    birthday = Console.ReadLine();
    
                    try
                    {
                        Convert.ToDateTime(birthday);
                        break;
                    }
                    catch
                    {
                        Console.WriteLine("输入的格式不正确,请重新输入");
                    }
                }
    
    
                //判断输入的民族在该数据库中是否有此记录
                while (true)
                {
                    Console.Write("请输入民族:");
                    string nation = Console.ReadLine();
                    //从民族表中查询用户输入的民族对应的民族编号
                    cmd.CommandText = "select NationCode from UserNation where NationName='" + nation + "'";
                    conn.Open();
                    SqlDataReader dr = cmd.ExecuteReader();
                    //如果查询到该记录,则把民族编号提取出来,关闭数据库并跳出循环
                    if (dr.Read())
                    {
                        nationcode = dr["NationCode"].ToString();
                        conn.Close();
                        break;
                    }
                    //如果查询不到该记录,提示一下用户,关闭数据库,继续循环。
                    else
                    {
                        conn.Close();
                        Console.WriteLine("记录暂无此民族,请输入其他民族");
                    }
                }
    
                //添加数据的sql语句
                cmd.CommandText = "insert into Users values('" + name + "','" + password + "','" + nickname + "','" + sex + "','" + birthday + "','" + nationcode + "')";
                conn.Open();
                int a = cmd.ExecuteNonQuery();
                if (a == 1) Console.WriteLine("数据已经添加进去");
                else Console.WriteLine("该条数据未添加进去!");
                conn.Close();
    
    
                Console.ReadLine();
            }
        }
    }
     
  • 相关阅读:
    C语言第四次博客作业嵌套循环
    C语言第六次博客作业数据类型
    C语言第五次博客作业函数
    C语言第二次博客作业分支结构
    MD5 DSA RSA 简单 区别
    关于Linux Grep命令使用的详细介绍
    最好、最智能化、最方便的Java开发软件 IntelliJ IDEA 10.5.2
    Linux Find 命令精通指南
    linux 下面递归查找
    公钥和私钥的解释
  • 原文地址:https://www.cnblogs.com/zhulijun/p/6758074.html
Copyright © 2011-2022 走看看