zoukankan      html  css  js  c++  java
  • 2017-4-19 ado.net 增,删,改,查,练习

    数据访问

    对应命名空间:System.Data.SqlClient;

    SqlConnection:连接对象  conn
    SqlCommand:命令对象      cmd
    SqlDataReader:读取器对象  

    CommandText:命令文本

    增、删、改、查

    1.造连接字符串
    string connstring = "server=.;database=mydb;user=sa;pwd=123";

              connstring:造的字符串名

              server指服务器一般是IP地址本机可以使用点;
              database指数据库名称要访问的数据库名称
              user数据库的用户名:一般是sa
              pwd数据库的密码:自己设置的

    2.造连接对象
    SqlConnection conn = new SqlConnection(connstring);

              conn:造的连接对象名

              可以直接把连接字符串写到(中)

    3.创建命令对象
    SqlCommand cmd = conn.CreateCommand();

              cmd:造的命令对象名

    4.写要执行的SQL语句

      4-1:查询

      cmd.CommandText = "select * from Student"; 

      //4-2:添加

      cmd.CommandText = "Insert into Student values('p032','毒哥','True','n001','1987-02-02')";

      //4-3:删除

      cmd.CommandText = "delete from Student where Code='p032';

      //4-4:更改

       cmd.CommandText = "update Student set name='情方方' where Code='p032';

    【打开连接】
    conn.Open();  //可放在执行之前的任意位置

    5.执行操作

      5-1:(适用于查询语句),如果查询到返回true

      SqlDataReader dr = cmd.ExecuteReader();

      //5-2.执行操作(增删改操作,返回行数)
      cmd.ExecuteNonQuery();

    6.处理数据

      6-1:查询一条数据

      if (dr.HasRows)      //HasRows 判断是否有行数据 bool型,返回true/false
      {
        dr.Read();    //dr.Read() 是数据库数据访问指针,每执行一次都会向下走一行,如果有内容则返回true,同时dr访问为当前行数据集合,

                   可以使用索引或是列名来访问相对应的数据

        Console.WriteLine(dr[0]);
        Console.ReadLine();
      }
      else
      {
        Console.WriteLine("读取失败!");
      }

      //6-2.查询多条数据

      if (dr.HasRows)
      {
        while(dr.Read())  //使用while循环读取所有数据  一行数据是一个数组,一行数据里有多少列就有多少个索引
      {
        Console.WriteLine(dr[0]+"----"+dr[1]);
      }

        Console.ReadLine();
      }
      else
      {
        Console.WriteLine("没有读到数据");
        Console.ReadLine();
      }

    【关闭连接】

    conn.Close();

    练习:1。向数据库Student表中插入一条数据,

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.SqlClient;
    
    namespace 练习2
    {
        class Program
        {
            static void Main(string[] args)
            {
                //创建数据库连接
                SqlConnection conn = new SqlConnection("server=localhost;database=stu0314;user=sa;pwd=123;");//数据库连接类
                SqlCommand cmd = conn.CreateCommand();//数据库操作类
    
                string name = "";
                //姓名不能为空,插入数据的时候姓名不能和数据库中的数据重复
                while (true)
                {
                    Console.Write("请输入要添加的用户名:");
                    name = Console.ReadLine();
                    bool has = false;
                    if (name.Length == 0)
                        Console.WriteLine("用户名不能为空,请重新输入");
                    else
                    {
                        cmd.CommandText = "select * from Users where UserName=@a";//@a表示占位符,可以防止字符型攻击
                        cmd.Parameters.Clear();//每次输入之前都要进行清空,才能输入
                        cmd.Parameters.AddWithValue("@a", name);
                        conn.Open();
                        SqlDataReader dr = cmd.ExecuteReader();
                        if (dr.HasRows)
                            has = true;
                        conn.Close();
                        if (has)
                        {
                            Console.WriteLine("您输入的用户名重复,请重新输入");
                        }
                        else
                        {
                            break;
                        }
                    }
                }
                string pwd = "";
                //密码的长度不能小于6为数
                while (true)
                {
                    Console.Write("请输入要添加的密码:");
                    pwd = Console.ReadLine();
                    if (pwd.Length < 6)
                        Console.WriteLine("请重新输入大于6位数的密码。");
                    else
                        break;
                }
                string nikename = "";
                //用户名不能为空
                while (true)
                {
                    Console.Write("请输入要添加的昵称:");
                    nikename = Console.ReadLine();
                    if (nikename.Length == 0)
                        Console.WriteLine("用户名不能为空,请重新输入");
                    else
                        break;
                }
                string sex = "";
                bool sex1;
                //用户只能输入男或女才行,否则直达输入正确为止
                while (true)
                {
                    Console.Write("请输入要添加的性别:");
                    sex = Console.ReadLine();
                    if (sex == "")
                    {
                        sex1 = true;
                        break;
                    }
                    else if (sex == "")
                    {
                        sex1 = false;
                        break;
                    }
                    else
                    {
                        Console.WriteLine("输入错误,性别只能输入男或女,请重新输入");
                    }
                }
                //用户输入的生日必须正确
                Console.Write("请输入要添加的生日:");
                string bir = Console.ReadLine();
                try
                {
                    DateTime bir1 = Convert.ToDateTime(bir);
    
                }
                catch
                {
                    Console.WriteLine("您输入的生日不对,请重新输入");
                }
    
                string nation="";
                //根据数据库表中的民族,进行输入
                while (true)
                {
                    Console.Write("请输入要添加的民族:");
                    nation = Console.ReadLine();
                    if (nation == "汉族" || nation == "")
                    {
                        nation = "n001";
                        break;
                    }
                    else if (nation == "壮族" || nation == "")
                    {
                        nation = "n002";
                        break;
                    }
                    else if (nation == "傣族" || nation == "")
                    {
                        nation = "n003";
                        break;
                    }
                    else if (nation == "朝鲜族" || nation == "朝鲜")
                    {
                        nation = "n004";
                        break;
                    }
                    else
                    {
                        Console.WriteLine("咱不支持你输入的名族,请输入以下名族(汉族/壮族/傣族/朝鲜族)");
                    }
                }
    
    
                string cla="";
                //根据数据库中的班级数据进行输入
                while (true)
                {
                    Console.Write("请输入要添加的班级:");
                    cla = Console.ReadLine();
                    if (cla == "计算机班")
                    {
                        cla = "c001";
                        break;
                    }
                    else if (cla == "数学班")
                    {
                        cla = "c002";
                        break;
                    }
                    else if (cla == "语文班")
                    {
                        cla = "c003";
                        break;
                    }
                    else if (cla == "英语班")
                    {
                        cla = "c004";
                        break;
                    }
                    else
                    {
                        Console.WriteLine("咱不开设你输入的班级,请输入以下名族(计算机班/数学班/语文班/数学班)");
                    }
                }
    
                cmd.CommandText = "insert into Users values(@a,@b,@c,@d,@e,@f,@g)";
                cmd.Parameters.Clear();
                cmd.Parameters.AddWithValue("@a", name);
                cmd.Parameters.AddWithValue("@b", pwd);
                cmd.Parameters.AddWithValue("@c", nikename);
                cmd.Parameters.AddWithValue("@d", sex1);
                cmd.Parameters.AddWithValue("@e", bir);
                cmd.Parameters.AddWithValue("@f", nation);
                cmd.Parameters.AddWithValue("@g", cla);
    
                conn.Open();
                int i = cmd.ExecuteNonQuery();
                if (i > 0)
                    Console.WriteLine("插入数据成功");
                else
                    Console.WriteLine("插入失败");
                conn.Close();
    
                Console.ReadLine();
            }
        }
    }

    2.创建一个学生表,只输入学生的姓名(需要判断是否重复,不能为空),学生的id自动生成格式(S001),每次自动加1

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.SqlClient;
    
    namespace 练习5
    {
        class Program
        {
            static void Main(string[] args)
            {
                SqlConnection conn = new SqlConnection("server=localhost;database=stu0314;user=sa;pwd=123;");
                SqlCommand cmd = conn.CreateCommand();
    
                string name = "";
                while (true)
                {
                    Console.Write("请输入学生姓名:");
                     name = Console.ReadLine();
                    if (name.Length == 0)
                    {
                        Console.WriteLine("姓名不能为空,请重新输入");
                    }
                    else 
                    {
                        cmd.CommandText = "select * from Student where Sname='"+name+"'";
                        conn.Open();
                        SqlDataReader dr1 = cmd.ExecuteReader();
                        if (dr1.HasRows)
                            Console.WriteLine("姓名不能重复");
                        conn.Close();
                    }
                }
    
                string nub = "S001";//设置nub的初始值为S001
    
                cmd.CommandText = "select * from Student";
                conn.Open();
                SqlDataReader dr = cmd.ExecuteReader();
                if (dr.HasRows) 
                {
                    List<string> list = new List<string>();//用泛型集合存放数据库中的所有nub
                    while (dr.Read())
                    {
                        list.Add( dr[1].ToString());//给泛型集合添加数据
                    }
                    nub = list[list.Count - 1].ToString();//取出最后一个nub
                    for (int i = 0; i < list.Count; i++)//遍历所有的数据
                    {
    
                        if (nub == list[i])//对数据进行判断
                        {
                            int j = Convert.ToInt32(list[i].Substring(1, 3));
                            if (j > 0 && j < 10)
                            {
                                j++;
                                nub = ("S00" + j).ToString();
                                break;
                            }
                            else if (j > 10 && j < 99)
                            {
                                j++;
                                nub = ("S0" + j).ToString();
                                break;
                            }
                            else if (j > 100 && j < 999)
                            {
                                j++;
                                nub = ("S" + j).ToString();
                                break;
                            }
                        }
                    }
                }
    
    
                conn.Close();
                //将生成的数据插入到数据库中
                cmd.CommandText = "insert into Student values(@a,@b)";
                cmd.Parameters.Clear();
                cmd.Parameters.AddWithValue("@a",name);
                cmd.Parameters.AddWithValue("@b", nub);
                conn.Open();
                int endi = cmd.ExecuteNonQuery();
                if (endi > 0)
                {
                    Console.WriteLine("插入数据成功");
                    
                }
                else
                    Console.WriteLine("插入数据失败");
                conn.Close();
    
                
                    
    
                
    
    
                Console.ReadLine();
            }
        }
    }
  • 相关阅读:
    html5基础的常用的技巧
    安全验证之使用摘要认证(digest authentication)
    自制AutoMapper实现DTO到持久层Entity的转换
    javascript ajax 脚本跨域调用全解析
    Padrino 生成器指南
    jQuery设计思想
    MS SQL SERVER 2008 使用OBJECT_ID判断临时表是否存在
    C#基础原理拾遗——引用类型的值传递和引用传递
    Java的23种设计模式
    使用实时文件夹显示联系人信息
  • 原文地址:https://www.cnblogs.com/qingnianxu/p/6735868.html
Copyright © 2011-2022 走看看