zoukankan      html  css  js  c++  java
  • ADO.NET复习总结(4)--访问SqlServer的类

    1、连接SqlConnection

    2、

    3、执行命令SqlCommand

    4、数据读取SqlDataReader

     

     注意:

    ExecuteNonQuery() :执行非查询(增删改)

    ExecuteScalar(): 执行查询,获取单个值,返回单行单列

    ExecuteReader() :执行查询,获取多个值,返回多行多列

    示例代码:

    1.插入语句测试      ExecuteNonQuery() 方法

    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)
            {
                //1.连接字符串
                string constr = "Data Source=.;Initial Catalog=dbtest;User Id=sa;Password=123;";
                //2.创建连接对象
                using(SqlConnection conn=new SqlConnection (constr))
                {
                    //3.SQL 语句
                    string sql = "insert into test2 values('战狼') ";
                    //4.创建SQLcommand对象
                    using(SqlCommand cmd=new SqlCommand (sql,con))
                    {
                        //5.打开连接
                        conn.Open();
                        //6.执行
                        int r = cmd.ExecuteNonQuery();
                        Console.WriteLine("成功的插入了{0}行。", r);
                    }
                }
                Console.ReadKey();
            }
        }
    }
    View Code

    2.查询,获取多个值    ExecuteReader()方法,返回类型datareader

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.SqlClient;
    
    namespace _02
    {
        class Program
        {
            static void Main(string[] args)
            {
                //1.连接字符串
                string constr = "Data Source=.;Initial Catalog=dbtest;User Id=sa;Password=123;";
                //2.创建连接对象
                using (SqlConnection conn = new SqlConnection(constr))
                {
                    //3.SQL 语句
                    string sql = "select * from  StudentInfo";
                    //4.创建SQLcommand对象
                    using (SqlCommand cmd = new SqlCommand(sql, conn))
                    {
                        //5.打开连接
                        conn.Open();
                        //6.执行
                        //通过调用ExecuteReader()方法,将给定的sql语句在服务器中执行。
                        //执行完毕后,服务器就已经查询出了数据。但是数据是保存在数据库服务器的内存当中。
                        //并没有返回给应用程序。知识返回给了应用程序一个reader对象,这个对象就是用来获取数据的对象。
                        using ( SqlDataReader reader = cmd.ExecuteReader())
                        {
                            //接下来就要通过reader对象一条一条获取数据
                            //1、在获取数据之前,先判断一下本次执行查询之后,是否查询到了数据
                            if (reader.HasRows)//属性HasRows判断是否结果集中有行
                            {
                                //2.有数据,那么接下来就要一条一条获取数据‘
                                //每次获取数据之前,都要先调用reader.Read()方法,向后移动一条数据,如果成功移到了某条数据上,则返回true,否则为FALSE
                                while(reader.Read())
                                {
                                   //获取当前reader指向的数据(一行多列)
                                    //reader.FieldCount,可以查询当前查询语句查询出列的个数。
                                    for (int i = 0; i < reader.FieldCount; i++)
                                    {
                                        Console.Write(reader[i] + "    |    ");
                                        
                                    }
                                    Console.WriteLine();
                                }
                            }
                            else
                            {
                              Console.WriteLine("没有任何数据");
                            }
                        }
                    }
                }
                Console.ReadKey();
            }
        }
    }
    View Code
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.SqlClient;
    
    namespace _02
    {
        class Program
        {
            static void Main(string[] args)
            {
                //1.连接字符串
                string constr = "Data Source=.;Initial Catalog=dbtest;User Id=sa;Password=123;";
                //2.创建连接对象
                using (SqlConnection conn = new SqlConnection(constr))
                {
                    //3.SQL 语句
                    string sql = "select * from  StudentInfo";
                    //4.创建SQLcommand对象
                    using (SqlCommand cmd = new SqlCommand(sql, conn))
                    {
                        //5.打开连接
                        conn.Open();
                        //6.执行
                        //通过调用ExecuteReader()方法,将给定的sql语句在服务器中执行。
                        //执行完毕后,服务器就已经查询出了数据。但是数据是保存在数据库服务器的内存当中。
                        //并没有返回给应用程序。知识返回给了应用程序一个reader对象,这个对象就是用来获取数据的对象。
                        using ( SqlDataReader reader = cmd.ExecuteReader())
                        {
                            //接下来就要通过reader对象一条一条获取数据
                            //1、在获取数据之前,先判断一下本次执行查询之后,是否查询到了数据
                            if (reader.HasRows)//属性HasRows判断是否结果集中有行
                            {
                                //2.有数据,那么接下来就要一条一条获取数据‘
                                //每次获取数据之前,都要先调用reader.Read()方法,向后移动一条数据,如果成功移到了某条数据上,则返回true,否则为FALSE
                                while(reader.Read())
                                {
                                   //获取当前reader指向的数据(一行多列)
                                    //reader.FieldCount,可以查询当前查询语句查询出列的个数。
                                    for (int i = 0; i < reader.FieldCount; i++)
                                    {
                                        //但是通过reader【】索引器,可以使用列名获取列的值
                                       // Console.Write(reader[i] + "    |    ");
                                       
                                          Console.Write(reader["sid"] );
    
                                        //根据列名称获取列的索引
                                        //reader.Getordinal();
                                        
                                        //GetValue()只能通过列索引来获取列的值
                                        Console.Write(reader.GetValue(i) + "  |  ");
                                        
                                    }
                                    Console.WriteLine();
                                }
                            }
                            else
                            {
                              Console.WriteLine("没有任何数据");
                            }
                        }
                    }
                }
                Console.ReadKey();
            }
        }
    }
    View Code

    注意:

    当遇到数据库中的null值的时候,通过Reader.GetValue()或者reader()索引器来获取列的值,

    拿到的是DBNull.Value,不是C#Null,而DBNull.ValueToString()方法返回的空字符串,所以最终没有报错。

     //大多数用下面这种方法
                                        //通过下面这种方式读取到的数据直接就是对应的类型,不是object类型,使用起来更方便。
                                        reader.Getxxxxx()//使用强类型读取列中的数据
                                        

     2、SqlDataReader

     

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data.SqlClient;
    
    namespace _02
    {
        class Program
        {
            static void Main(string[] args)
            {
                #region  版本1
                ////1.连接字符串
                //string constr = "Data Source=.;Initial Catalog=dbtest;User Id=sa;Password=123;";
                ////2.创建连接对象
                //using (SqlConnection conn = new SqlConnection(constr))
                //{
                //    //3.SQL 语句
                //    string sql = "select * from  StudentInfo";
                //    //4.创建SQLcommand对象
                //    using (SqlCommand cmd = new SqlCommand(sql, conn))
                //    {
                //        //5.打开连接
                //        conn.Open();
                //        //6.执行
                //        //通过调用ExecuteReader()方法,将给定的sql语句在服务器中执行。
                //        //执行完毕后,服务器就已经查询出了数据。但是数据是保存在数据库服务器的内存当中。
                //        //并没有返回给应用程序。知识返回给了应用程序一个reader对象,这个对象就是用来获取数据的对象。
                //        using (SqlDataReader reader = cmd.ExecuteReader())
                //        {
                //            //接下来就要通过reader对象一条一条获取数据
                //            //1、在获取数据之前,先判断一下本次执行查询之后,是否查询到了数据
                //            if (reader.HasRows)//属性HasRows判断是否结果集中有行
                //            {
                //                //2.有数据,那么接下来就要一条一条获取数据‘
                //                //每次获取数据之前,都要先调用reader.Read()方法,向后移动一条数据,如果成功移到了某条数据上,则返回true,否则为FALSE
                //                while (reader.Read())
                //                {
                //                    //获取当前reader指向的数据(一行多列)
                //                    //reader.FieldCount,可以查询当前查询语句查询出列的个数。
                //                    for (int i = 0; i < reader.FieldCount; i++)
                //                    {
                //                        //但是通过reader【】索引器,可以使用列名获取列的值
                //                        // Console.Write(reader[i] + "    |    ");
    
                //                        Console.Write(reader["sid"]);
    
                //                        //根据列名称获取列的索引
                //                        //reader.Getordinal();
    
                //                        //GetValue()只能通过列索引来获取列的值
                //                        //  Console.Write(reader.GetValue(i) + "  |  ");
    
                //                        //大多数用下面这种方法
                //                        //通过下面这种方式读取到的数据直接就是对应的类型,不是object类型,使用起来更方便。
                //                        //  reader.Getxxxxx()//使用强类型读取列中的数据
    
                //                    }
                //                    Console.WriteLine();
                //                }
                //            }
                //            else
                //            {
                //                Console.WriteLine("没有任何数据");
                //            }
                //        }
                //    }
                //}
                #endregion
    
                #region 版本2
                string constr = "Data Source=.;Initial Catalog=dbtest;User Id=sa;Password=123;";
                using (SqlConnection conn = new SqlConnection(constr))
                {
                    string sql = "select * from  StudentInfo";
                    using (SqlCommand cmd = new SqlCommand(sql, conn))
                    {
                        conn.Open();
                        using (SqlDataReader reader = cmd.ExecuteReader())
                        {
                            if (reader.HasRows)
                            {
                                //注意通过reader.GetXxxx()方式来获取表中的数据,如果数据为null,那么久报异常了,此时需要手动写代码来判断数据是否为null
                                while (reader.Read())
                                {
                                    //sId, sName, sGender, sBirthday, sPhone, sEMail, cid
                                    //打印每一列的值
                                    Console.Write(reader.GetInt32(0) + "	||	");
                                    Console.Write(reader.GetString(1) + "	||	");
                                    Console.Write(reader.GetBoolean(2) + "	||	");
                                    Console.Write(reader.GetDateTime(3) + "	||	");
    
                                    Console.Write(reader.IsDBNull(4)?"NULL":reader.GetString(4)+ "	||	");
    
                                  //Console.Write(reader.GetString(4) + "	||	");
                                    Console.Write(reader.GetString(5) + "	||	");
                                    Console.Write(reader.GetSqlInt32(6) + "	||	");
                                }
                            }
                        }
                    }
                #endregion
                    Console.ReadKey();
                }
            }
        }
    }
    View Code

  • 相关阅读:
    [20210908]Reverse Shell with Bash.txt
    [20210831]bbed读取数据块6.txt
    自主学习 之 用Python玩转数据
    简单四则运算(PSP)
    永久免费云服务器搭建国内Moon服务加速ZeroTier
    INDEX
    openjdk 8 的 hotspot 源码目录结构
    CentOS 7 编译 openjdk 8
    23
    22
  • 原文地址:https://www.cnblogs.com/mhq-martin/p/8087683.html
Copyright © 2011-2022 走看看