SQL.sqlCommand 理解,和用法

        

        

2.1  方法一:ExecuteScalar

2.2 方法二:ExecuteNonQuery

2.3 方法三:ExecuteReader

        

      1.了解 

      1.1    sqlCommand:对 SQL Server 数据库执行的一个 Transact-SQL 语句或存储过程。连接 .NETt和SQL Server;将我们在客户端设置的sql语句传递给sql;再将sql的值传递给客户端。     

 

      2. 方法    

      2.1 . ExecuteScalar

      作用:执行查询
      返回值:返回查询所返回的结果集中第一行的第一列。 忽略其他列或行。System.Object  结果集中第一行的第一列;如果结果集为空,则为空引用(在 Visual Basic 中为Nothing)
适用情况:
      使用 ExecuteScalar 方法从数据库中检索单个值(例如一个聚合值)。

sqlcommand.Excutescaler()此方法主要是用来返回一个值的情况,例如使用count()函数求表中的所有记录的条数,或者是使用sum()求数据的函数求和。sqlcommand.commandtext是为了获取或者设置来执行T

      2.2  ExecuteNonQuery

作用:对连接执行 Transact-SQL 语句并返回受影响的行数。
返回值:类型:System.Int32 受影响的行数。对于 UPDATE、INSERT 和 DELETE 语句,返回值为该命令所影响的行数。 如果正在执行插入或更新操作的表上存在触发器,则返回值包括受插入或更新操作影响的行数以及受一个或多个触发器影响的行数。 对于其他所有类型的语句,返回值为 -1。 如果发生回滚,则返回值也是 -1。

sqlcommand.ExecuteNonQuery ()该方法主要是执行SQL语句的插入、修改、删除的命令、返回所影响的行数,并不返回操作数据库中数据表的数据。

          2.3   ExecuteReader

作用:当ExecuteReader()执行后给SqlDataReader对象一个可以访问查询到的结果的渠道。
   

//将 CommandText 发送到 Connection 并生成一个 SqlDataReader。

//将SQL语句发送到指定连接 生成一个SqlDataReader对象

返回值:

类型:System.Data.SqlClient.SqlDataReader    SqlDataReader 对象。
SqlDataReader的Read方法可以使SqlDataReader前进到下一条记录,同样返回bool值,当下一条无记录返回false,则表示记录读取完毕;当下一条有数据时为true,将读取到的数据(当前的一条记录)暂存在SqlDataReader

sqlcommand.ExecuteReader()该方法主要是执行SQL的select语句,ExecuteReader()方法主要提供顺序读取数据库中的数据的方法,然后返回SqlReader对象,编者可以使用read的方法循环依次读取每个记录中各字段的内容。若要创建SqlDataReader,必须调用sqlcommand对象的ExecuteReader()方法来返回数据库中数据表的数据:

3 用法

1.ExecuteNonQuery

//04.添加学生
        public bool AddStudent(Students stu)
        {
            bool flag = false;
            string sql = @"insert into student(LoginPwd,StudentName,Gender,GradeId,Phone,Address,Email)
                        values('" + stu.LoginPwd + "','" + stu.StudentName + "'m,'" + stu.Gender + "','" + stu.GradeId +
                         "','" + stu.Phone + "','" + stu.Address + "','" + stu.Email + "')";
            int count = SQLHelper.ExecuteNonQuery(sql);
            if (count>0)
            {
                flag = true;
            }
            return flag;
        }

 
   

2、ExecuteReader

class Program
    {
        static void Main(string[] args)
        {
            string constr = @"server=.\SQLEXPRESS;database=MyDataBase;uid=sa;pwd=sa";
            //string constr = @"server=.\SQLEXPRESS;database=MyDataBase;Integrated Security=True";

           

            using (SqlConnection sqlconn = new SqlConnection(constr))
            {
                string cmdstr = @"select * from Student";
                using (SqlCommand cmd = new SqlCommand(cmdstr, sqlconn))
                {
                    if (sqlconn.State == ConnectionState.Closed)
                    {
                        sqlconn.Open();
                    }
                    SqlDataReader reader= cmd.ExecuteReader();

                    if (reader.HasRows)//HasRows判断reader中是否有数据
                    {
                        while(reader.Read())  //Read()方法读取下一条记录,如果没有下一条,返回false,则表示读取完成
                        {
                            int id = reader.GetInt32(0);
                            string name = reader.GetString(1);
                           string  gender = reader.GetBoolean(3) == true ? "男" : "女"; //运用了三元表达式
                            int age = reader.GetInt32(2);

                            Console.WriteLine("\t{0}\t{1}\t{2}\t{3}\r\n",id,name,gender,age);
                        }

                        Console.ReadKey();
                    }
               
                }

            }
        }
    }

 
   

3、ExecuteScalar();

 string str = "data source=.;initial catalog=MySchool;uid=sa";   
         SqlConnection con = new SqlConnection(str);
            string sql = "select gradeid from grade where gradename='" + gradename + "'";
            SqlCommand cmd = new SqlCommand(sql, con);
            cmd.ExecuteScalar();
            int greadeid=Convert.ToInt32(cmd.ExecuteScalar());
            con.Close();
         return greadeid;
 
   
原文地址:https://www.cnblogs.com/1612ss/p/7156404.html