首页 技术 正文
技术 2022年11月21日
0 收藏 962 点赞 5,022 浏览 2984 个字

  操作数据库需则要用到 Command 类中提供的属性和方法。下面来介绍一下如何使用 Command 类来操作数据表中的数据。

Command 类概述

  在 System.Data.SqlClient 命名空间下,对应的 Command 类为 SqlCommand,在创建 SqlCommand 实例前必须已经创建了与数据库的连接。

  SqlCommand 类中常用的构造方法如下表所示。

构造方法 说明
SqlCommand() 无参构造方法
SqlCommand(string commandText,SqlConnection conn) 带参的构造方法,第 1 个参数是要执行的 SQL 语句,第 2 个参数是数据库的连接对象

  对数据库中对象的操作不仅包括对数据表的操作,还包括对数据库、视图、存储过程等数据库对象的操作,接下来主要介绍的是对数据表和存储过程的操作。

  在对不同数据库对象进行操作时,SqlCommand 类提供了不同的属性和方法,常用的属性和方法如下表所示。

属性或方法 说明
CommandText 属性,Command 对象中要执行的 SQL 语句
Connection 属性,获取或设置数据库的连接对象
CommandType 属性,获取或设置命令类型
Parameters 属性,设置 Command 对象中 SQL 语句的参数
ExecuteReader() 方法,获取执行查询语句的结果
ExecuteScalar() 方法,返回查询结果中第 1 行第 1 列的值
ExecuteNonQuery() 方法,执行对数据表的增加、删除、修改操作

使用 Command 类操作数据库

  Command 类中提供了 3 种命令类型,分别是 Text、TableDirect 以及 StoredProcedure,默认情况下是 Text。

  所谓 Text 类型是指使用 SQL 语句的形式,包括增加、删除、修改以及查询的SQL语句。

  StoredProcedure 用于执行存储过程;TableDirect 仅在 OLE DB 驱动程序中有效。

  在使用 Command 类操作数据库时需要通过以下步骤完成。

1) 创建 SqlCommand 类的实例

  创建 SqlCommand 类的实例分两种情况,一种是命令类型为 Text 的,一种是命令类型为 StoredProcedure 的。

  命令类型为 Text

  SqlCommand SqlCommand 类的实例名 = new SqlCommand( SQL 语句 , 数据库连接类的实例 );

  其中:

  • SQL 语句:指该 SqlCommand 类的实例要执行的 SQL 语句。
  • 数据库连接类的实例:指使用 SqlConnection 类创建的实例,通常数据库连接类的实例处于打开的状态。

  命令类型为 StoredProcedure

  SqlCommand SqlCommand 类的实例名 = new SqlCommand( 存储过程名称 , 数据库连接类的实例 );

  需要注意的是,存储过程必须是当前数据库实例中的存储过程,并且在调用带参数的存储过程时,还需要在 SqlCommand 类的     实例中添加对应的存储过程参数。

  为存储过程添加参数,需要使用 SqlCommand 类实例的 Parameters 属性来设置,具体的代码如下。

  SqlCommand 类实例 .Parameters.Add( 参数名 , 参数值 );

  在这里,参数名与存储过程中定义的参数名要一致。

2) 执行对数据表的操作

  在执行对数据表的操作时通常分为两种情况,一种是执行非查询 SQL 语句的操作,即增加、修改、删除的操作,一种是执行    查询 SQL 语句的操作。

  执行非查询 SQL 语句的操作

  在执行非查询 SQL 语句时并不需要返回表中的数据,直接使用 SqlCommand 类的 ExecuteNonQuery 方法即可,该方法的        返回值是一个整数,用于返回 SqlCommand 类在执行 SQL 语句后,对表中数据影响的行数。

  当该方法的返回值为 -1 时,代表 SQL 语句执行失败,当该方法的返回值为 0 时,代表 SQL 语句对当前数据表中的数据    没有影响。

  例如 要删除学号为 1100 的学生的信息,而表中不存在该学号的学生的信息,SQL语句可以正常执行,但对表中的影响行数是 0。

  具体的代码如下。

  SqlCommand 类的实例 .ExecuteNonQuery();

  需要注意的是,如果执行的 SQL 语句在数据库中执行错误,则会产生异常,因此该部分需要进行异常处理。

  执行查询语句的操作

  在执行查询语句时通常需要返回查询结果,SqlCommand 类中提供的 ExecuteReader 方法在执行查询 SQL 语句后,会返回一个   SqlDataReader 类型的值,通过遍历 SqlDataReader 类中的结果即可得到返回值。

  具体的代码如下。

  SqlDataReader dr = SqlCommand 类的实例 .ExecuteReader();

  此外,如果在执行查询语句后并不需要返回所有的查询结果,而仅需要返回一个值,例如查询表中的记录行数,这时可以使用   ExecuteScalar 方法。具体的代码如下。

  int returnvalue = SqlCommand 类的实例 .ExecuteScalar();

eg:

  string sql = “SELECT * FROM UserAlertTable WHERE id=1”;
  using (SqlConnection con = new SqlConnection(str))
  {
    con.Open();
    SqlCommand cmd = new SqlCommand(sql, con);
    object obj = cmd.ExecuteScalar();
    WriteLine($”返回结果:{obj}”);
    ReadKey();
  }

  using (SqlConnection con = new SqlConnection(str))
  {
    try
    {
      con.Open();
      SqlCommand cmd = new SqlCommand(“InsertData_UserAlertTable”, con);
      cmd.CommandType = CommandType.StoredProcedure;
      SqlParameter para1 = new SqlParameter(“@number”, 21);
      SqlParameter para2 = new SqlParameter(“@what”, “e”);
      //cmd.Parameters.AddWithValue(“@number”, 17);
      //cmd.Parameters.AddWithValue(“@what”, “ha”);
      cmd.Parameters.Add(para1);
      cmd.Parameters.Add(para2);
      int res = cmd.ExecuteNonQuery();
      WriteLine($”返回结果:{res}”);
      ReadKey();
    }
    catch (Exception ex)
    {
      throw new Exception(ex.ToString());
    }
  }

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,994
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,507
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,350
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,135
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,768
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,845