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();
        }
    }
}

 

posted @ 2017-04-19 21:05  青年a  阅读(257)  评论(0编辑  收藏  举报