ADO.net 增、删、改、查

数据访问

将数据库中的数据,提取到内存中,展示给用户看
还可以将内存中的数据写入数据库中去

并不是唯一的数据库访问技术,但是它是最底层的数据库访问技术

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

SqlConnection:连接对象

SqlCommand:命令对象

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 Info"; 

  4-2:添加

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

  4-3:删除

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

  4-4:更改

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

5、打开连接

conn.Open();  //可放在执行之前的任意位置

6、执行操作

     6-1:(读取操作,返回读取器对象)

  SqlDataReader dr = cmd.ExecuteReader();

  6-2.执行操作(增删改操作,返回行数)   

     cmd.ExecuteNonQuery();

7、处理数据

     7-1:查询一条数据

  if (dr.HasRows)      //HasRows 判断是否有行数据 bool型,返回true/false   

     {     

                dr.Read();      //dr.Read() 是数据库数据访问指针,每执行一次都会向下走一行,如果有内容则返回true,同时dr访问为当前行数据集合,可以使用索引或是列名来访问相对应的数据              

             Console.WriteLine(dr[0]);                   

                 Console.ReadLine();   

      }   

      else   

      {     

                 Console.WriteLine("读取失败!");   

      }

      7-2.查询多条数据

  if (dr.HasRows)   

     {     

                 while(dr.Read())  //使用while循环读取所有数据  一行数据是一个数组,一行数据里有多少列就有多少个索引                   

                 {     

                            Console.WriteLine(dr[0]+"----"+dr[1]);   

                 }

         Console.ReadLine();   

      }   

      else   

      {     

                 Console.WriteLine("没有读到数据");     

                 Console.ReadLine();   

      }

8、关闭连接

conn.Close();

例:根据用户输入一个条件查询数据、查询所有内容

 

static void Main1(string[] args)
        {
            //用户输入内容
            Console.WriteLine("请输入要查询的名称:");
            string str = Console.ReadLine();

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

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

            //造命令对象
            SqlCommand cmd = conn.CreateCommand();

            //准备一条SQL语句
            cmd.CommandText = "select * from Info where Name like '%"+str+"%'";

            //打开连接
            conn.Open();

            //执行SQL语句
            SqlDataReader dr = cmd.ExecuteReader();

            //读取数据
            if (dr.HasRows)
            {
                while (dr.Read())
                {
                    int n = 0;
                    while ( n <dr.FieldCount ) //.FieldCount获取当前行的列数
                    {
                        Console.Write(dr[n]+"\t");
                        n++;
                    }
                    Console.WriteLine();
                }
            }
            else
            {
                Console.WriteLine("没有查到满足条件的数据");
            }

            //关闭连接
            conn.Close();

            Console.ReadLine();

        }
View Code
//SqlConnection conn = new SqlConnection("server=.;database=Data0928;user=sa;pwd=123");
            //SqlCommand com = conn.CreateCommand();
            //com.CommandText = "select ids,username,password,nickname,sex,birthday,nationname,classname from users join nation on users.nation=nation.nationcode join class on users.class=class.classcode";
            //conn.Open();
            //SqlDataReader dr = com.ExecuteReader();
            //if (dr.HasRows)
            //{
            //    while (dr.Read())
            //    {
            //        int n = 0;
            //        while (n < dr.FieldCount)
            //        {
            //            if (dr[n] is Boolean)
            //            Console.Write(((Boolean)dr[n]?"男":"女")+"\t");
            //          else  if (dr[n] is DateTime)
            //                Console.Write((((DateTime)dr[n]).ToShortDateString())+"\t");
            //            else
            //                Console.Write(dr[n] + "\t");
            //            n++;
            //        }
            //        Console.WriteLine();
            //    }
            //}
            //conn.Close();
View Code

 

例:让用户输入要删除的数据主键值(此方法不安全)

static void Main4(string[] args)
        {
            //用户输入要删除的数据主键值
            Console.WriteLine("请输入要删除的代号:");
            string code = Console.ReadLine();

            //判断该数据存不存在
            SqlConnection conn = new SqlConnection("server=.;database=mydb;user=sa;pwd=123");
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = "select * from Info where Code='"+code+"'";
            conn.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            

            if (dr.HasRows)
            {
                //说明该数据存在
                Console.WriteLine("查到该数据,是否要执行删除操作,如果要删除请输入:1");
                int sc = Convert.ToInt32(Console.ReadLine());

                if (sc == 1)
                {
                    //删除
                    dr.Close(); //关闭读取器

                    cmd.CommandText = "delete from Info where Code='"+code+"'";
                    cmd.ExecuteNonQuery();
                    Console.WriteLine("删除成功!");
                    
                }
                else
                {
                    //不删除
                    dr.Read();

                    string sex = Convert.ToBoolean(dr[2])?"":"";
                    string nation = MinZu(dr[3].ToString());

                    string str = "代号:"+dr[0]+"\t姓名:"+dr[1]+"\t性别:"+sex+"\t民族:"+nation+"\t生日:"+dr[4];

                    Console.WriteLine(str);


                }
            }
            else
            {
                //数据不存在
                Console.WriteLine("输入的代号错误!");
            }

            conn.Close();
            Console.ReadLine();
        }


        static string MinZu(string code)
        {
            string name="";
            SqlConnection conn = new SqlConnection("server=.;database=mydb;user=sa;pwd=123");
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = "select Name from Nation where Code = '" + code + "'";
            conn.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            if (dr.HasRows)
            {
                dr.Read();
                name = dr[0].ToString();
            }
            conn.Close();

            return name;
        }
View Code

例:查找用户名 并选择是修改还是删除

 Console.Write("请输入要删除或更改的用户名:");        
            string name = Console.ReadLine();

            SqlConnection conn = new SqlConnection("server=.;database=Data0928;user=sa;pwd=123");
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = "select * from users where username='"+name+"'";
            conn.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            if (dr.HasRows)
            {
                conn.Close();
                Console.WriteLine("删除选:1,更改选:2");
                Console.Write("请输入您的选择:");
                string a = Console.ReadLine();
                if (a =="1")
                {                    
                    cmd.CommandText = "delete from users where username='"+name+"'";
                    conn.Open();
                    int i = cmd.ExecuteNonQuery();
                    if (i > 0)
                        Console.WriteLine("删除成功!!");
                    else
                        Console.WriteLine("删除失败!!");
                    conn.Close();
                }
                else if (a == "2")
                {
                    Console.Write("请输入修改后的用户名:");
                    string name1 = Console.ReadLine();
                    cmd.CommandText = "update users set username='" + name1 + "' where username='" + name+ "'";
                    conn.Open();
                    int i = cmd.ExecuteNonQuery();
                    if (i > 0)
                        Console.WriteLine("修改成功!!");
                    else
                        Console.WriteLine("修改失败!!");
                    conn.Close();
                }
            }            
            else
                Console.WriteLine("没有您要删除或更改的用户名!");             
                Console.ReadLine();
View Code

 

例:让用户输入要添加的内容

static void Main3(string[] args)
        {
            //让用户输入要添加的内容
            Console.WriteLine("请输入要添加的代号:");
            string code = Console.ReadLine();

            Console.WriteLine("请输入姓名:");
            string name = Console.ReadLine();

            Console.WriteLine("请输入性别:");
            bool sex = Console.ReadLine()==""?true:false;

            Console.WriteLine("请输入民族:");
            string nation = Console.ReadLine();

            Console.WriteLine("请输入生日:");
            string birthday = Console.ReadLine();

            string nationcode = "n001";

            //将民族名称转为名族代号
            SqlConnection conn = new SqlConnection("server=.;database=mydb;user=sa;pwd=123");
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = "select Code from Nation where Name = '"+nation+"'";
            conn.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            if (dr.HasRows)
            {
                dr.Read();
                nationcode = dr[0].ToString();
            }
            conn.Close();

            //往Info表添加数据
            cmd.CommandText = "insert into Info values('"+code+"','"+name+"','"+sex+"','"+nationcode+"','"+birthday+"')";
            conn.Open();
            cmd.ExecuteNonQuery();
            conn.Close();
            Console.WriteLine("添加成功!");

            Console.ReadLine();
        }
View Code

 

转载于:https://www.cnblogs.com/shadow-wolf/p/6111003.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值