Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - 编程 » SQL Anywhere 数据访问 API » SQL Anywhere .NET 数据提供程序 » 访问和操作数据 » 使用 SACommand 对象检索和操作数据

 

使用 SACommand 对象获取数据

使用 SACommand 对象可针对 SQL Anywhere 数据库执行 SQL 语句或调用存储过程。可以使用下列方法中的任一种检索数据库中的数据:

  • ExecuteReader   发出返回结果集的 SQL 查询。此方法使用只进、只读游标。可以沿一个方向快速循环遍历结果集中的行。

    有关详细信息,请参见ExecuteReader 方法

  • ExecuteScalar   发出返回单个值的 SQL 查询。可以是结果集的第一行中的第一列,或返回集合值(如 COUNT 或 AVG)的 SQL 语句。此方法使用只进、只读游标。

    有关详细信息,请参见ExecuteScalar 方法

使用 SACommand 对象时,可使用 SADataReader 检索基于连接的结果集。但是,只能对一个表中的数据进行更改(插入、更新或删除)。不能更新基于连接的数据集。

下面的说明使用 .NET 数据提供程序提供的 Simple 代码示例。

有关 Simple 代码示例的详细信息,请参见了解 Simple 示例项目

♦  发出返回完整结果集的 SQL 查询
  1. 声明并初始化一个 Connection 对象。

    SAConnection conn = new SAConnection(
        "Data Source=SQL Anywhere 11 Demo" );
  2. 打开该连接。

    try {
        conn.Open();
  3. 添加一个 Command 对象以定义并执行一条 SQL 语句。

    SACommand cmd = new SACommand(
         "SELECT Surname FROM Employees", conn );

    如果要调用存储过程,必须为该存储过程指定参数。

    有关详细信息,请参见使用存储过程SAParameter 类

  4. 调用 ExecuteReader 方法以返回 DataReader 对象。

    SADataReader reader = cmd.ExecuteReader();
  5. 显示结果。

    listEmployees.BeginUpdate();
    while( reader.Read() ) {
         listEmployees.Items.Add( reader.GetString( 0 ) );
    }
    listEmployees.EndUpdate();
  6. 关闭 DataReader 和 Connection 对象。

    reader.Close();
    conn.Close();
♦  发出仅返回一个值的 SQL 查询
  1. 声明并初始化一个 SAConnection 对象。

    SAConnection conn = new SAConnection(
        "Data Source=SQL Anywhere 11 Demo" );
  2. 打开该连接。

    conn.Open();
  3. 添加一个 SACommand 对象,以定义并执行一条 SQL 语句。

    SACommand cmd = new SACommand(
        "SELECT COUNT(*) FROM Employees WHERE Sex = 'M'",
        conn );

    如果要调用存储过程,必须为该存储过程指定参数。

    有关详细信息,请参见使用存储过程

  4. 调用 ExecuteScalar 方法返回包含该值的对象。

    int count = (int) cmd.ExecuteScalar();
  5. 关闭 SAConnection 对象。

    conn.Close();

使用 SADataReader 时,可使用多种 Get 方法来返回指定数据类型的结果。

有关详细信息,请参见SADataReader 类

Visual Basic DataReader 示例

下面的 Visual Basic 代码打开一个与 SQL Anywhere 示例数据库的连接,然后使用 DataReader 返回结果集中前五位雇员的姓氏:

Dim myConn As New SAConnection()
Dim myCmd As _
  New SACommand _
  ("SELECT Surname FROM Employees", myConn)
Dim myReader As SADataReader
Dim counter As Integer
myConn.ConnectionString = _
  "Data Source=SQL Anywhere 11 Demo"
myConn.Open()
myReader = myCmd.ExecuteReader()
counter = 0
Do While (myReader.Read())
  MsgBox(myReader.GetString(0))
  counter = counter + 1
  If counter >= 5 Then Exit Do
Loop
myConn.Close()