四时宝库

程序员的知识宝库

C# 之门课程系列-19(c#教程 知乎)

Command对象

Command对象也称为数据库命令对象,Command对象主要执行包括添加、删除、修改及查询数据的操作的命令。也可以用来执行存储过程。用于执行存储过程时需要将Command对象的CommandType 属性设置为CommandType.StoredProcedure,默认情况下CommandType 属性为CommandType.Text,表示执行的是普通SQL语句。 Command主要有三个方法:

  • ExecuteNonQuery
  • ExecuteScalar
  • ExecuteReader

ExecuteNonQuery

ExecuteNonQuery():执行一个SQL语句,返回受影响的行数,这个方法主要用于执行对数据库执行增加、更新、删除操作,注意查询的时候不是调用这个方法。用于完成insert,delete,update操作。

 string ConnectionString = System.Configuration.ConfigurationManager.AppSettings["DataConnString"].ToString();
            using (SqlConnection conn = new SqlConnection(ConnectionString))
            {
                conn.Open();
                string sql = "INSERT  INTO bz_users(name, password) VALUES('张三','123456')";
                SqlCommand cmd = new SqlCommand(sql, conn);
                int rows = cmd.ExecuteNonQuery();
                if (rows > 0)
                {
                    Console.WriteLine("Insert ok");
                }
            }
            Console.ReadKey();

ExecuteNonQuery Insert

 string ConnectionString = System.Configuration.ConfigurationManager.AppSettings["DataConnString"].ToString();
            using (SqlConnection conn = new SqlConnection(ConnectionString))
            {
                conn.Open();
                string sql = "INSERT  INTO bz_users(name, password) VALUES(@Name,@Password)";
                SqlCommand cmd = new SqlCommand(sql, conn);
                cmd.Parameters.Add(new SqlParameter("@Name", "李四"));
                cmd.Parameters.Add(new SqlParameter("@Password", "123"));
                int rows = cmd.ExecuteNonQuery();
                if (rows > 0)
                {
                    Console.WriteLine("Insert ok");
                }
            }
            Console.ReadKey();

ExecuteNonQuery Delete

 string ConnectionString = System.Configuration.ConfigurationManager.AppSettings["DataConnString"].ToString();
            using (SqlConnection conn = new SqlConnection(ConnectionString))
            {
                conn.Open();
                string sql = "delete from bz_users where name=@Name";
                SqlCommand cmd = new SqlCommand(sql, conn);
                cmd.Parameters.Add(new SqlParameter("@Name", "李四"));
                int rows = cmd.ExecuteNonQuery();
                if (rows > 0)
                {
                    Console.WriteLine("Delete ok");
                }
            }
            Console.ReadKey();

ExecuteNonQuery Update

 string ConnectionString = System.Configuration.ConfigurationManager.AppSettings["DataConnString"].ToString();
            using (SqlConnection conn = new SqlConnection(ConnectionString))
            {
                conn.Open();
                string sql = "update  bz_users set password=@Password where name=@Name";
                SqlCommand cmd = new SqlCommand(sql, conn);
                cmd.Parameters.Add(new SqlParameter("@Name", "张三"));
                cmd.Parameters.Add(new SqlParameter("@Password", "123"));
                int rows = cmd.ExecuteNonQuery();
                if (rows > 0)
                {
                    Console.WriteLine("Update ok");
                }
            }
            Console.ReadKey();

ExecuteScalar

ExecuteScalar ()从数据库检索单个值。这个方法主要用于统计操作。ExecuteScalar ()这个方法是针对SQL语句执行的结果是一行一列的结果集,这个方法只返回查询结果集的第一行第一列。

executeScalar主要用于查询单行单列的值,如聚合函数(count,max,min,agv,sum)。

string ConnectionString = System.Configuration.ConfigurationManager.AppSettings["DataConnString"].ToString();
            using (SqlConnection conn = new SqlConnection(ConnectionString))
            {
                conn.Open();
                string sql = "select count(*) from bz_users";
                SqlCommand cmd = new SqlCommand(sql, conn);
                int ret = int.Parse(cmd.ExecuteScalar().ToString());
                Console.WriteLine(ret);
            }
            Console.ReadKey();

ExecuteReader

ExecuteReader用于实现只进只读的高效数据查询。

ExecuteReader:返回一个SqlDataReader对象,可以通过这个对象来检查查询结果,它提供了只进只读的执行方式,即从结果中读取一行之后,移动到另一行,则前一行就无法再用。有一点要注意的是执行之后,要等到手动去调用Read()方法之后,DataReader对象才会移动到结果集的第一行,同时此方法也返回一个Bool值,表明下一行是否可用,返回True则可用,返回False则到达结果集末尾。

 string ConnectionString = System.Configuration.ConfigurationManager.AppSettings["DataConnString"].ToString();
            using (SqlConnection conn = new SqlConnection(ConnectionString))
            {
                conn.Open();
                string sql = "select * from bz_users";
                SqlCommand cmd = new SqlCommand(sql, conn);
                SqlDataReader sr = cmd.ExecuteReader();
                while (sr.Read())
                {
                    Console.WriteLine(sr["name"] + " " + sr["password"]);
                }
	 	  sr.Close();
            }
            Console.ReadKey();

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接