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

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

 

使用 SACommand 对象插入、更新和删除行

若要使用 SACommand 对象执行插入、更新或删除,请使用 ExecuteNonQuery 函数。ExecuteNonQuery 函数发出一个不返回结果集的查询(SQL 语句或存储过程)。请参见ExecuteNonQuery 方法

只能对一个表中的数据进行更改(插入、更新或删除)。不能更新基于连接的数据集。必须连接到数据库才能使用 SACommand 对象。

有关获取自动增量主键的主键值的信息,请参见获取主键值

如果希望设置 SQL 语句的隔离级别,则必须将 SACommand 对象用作 SATransaction 对象的一部分。不使用 SATransaction 对象修改数据时,提供程序在自动提交模式下运行,您所做的任何更改都将立即得到应用。请参见事务处理

 ♦  发出插入行的语句
  1. 声明并初始化一个 SAConnection 对象。

    SAConnection conn = new SAConnection(
        c_connStr );
    conn.Open();
  2. 打开该连接。

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

    可将 INSERT、UPDATE 或 DELETE 语句与 ExecuteNonQuery 方法一起使用。

    SACommand insertCmd = new SACommand(
        "INSERT INTO Departments( DepartmentID, DepartmentName )
        VALUES( ?, ? )", conn );

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

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

  4. 设置 SACommand 对象的参数。

    以下代码分别为 DepartmentID 和 DepartmentName 列定义参数。

    SAParameter parm = new SAParameter();
    parm.SADbType = SADbType.Integer;
    insertCmd.Parameters.Add( parm );
    parm = new SAParameter();
    parm.SADbType = SADbType.Char;
    insertCmd.Parameters.Add( parm );
  5. 插入新值并调用 ExecuteNonQuery 方法,将更改应用到数据库。

    insertCmd.Parameters[0].Value = 600;
    insertCmd.Parameters[1].Value = "Eastern Sales";
    int recordsAffected = insertCmd.ExecuteNonQuery();
    insertCmd.Parameters[0].Value = 700;
    insertCmd.Parameters[1].Value = "Western Sales";
    recordsAffected = insertCmd.ExecuteNonQuery();
  6. 显示结果并将结果绑定到屏幕上的网格中。



    SACommand selectCmd = new SACommand(
        "SELECT * FROM Departments", conn );
    SADataReader dr = selectCmd.ExecuteReader();
    
    System.Windows.Forms.DataGrid dataGrid;
    dataGrid = new System.Windows.Forms.DataGrid();
    dataGrid.Location = new Point(10, 10);
    dataGrid.Size = new Size(275, 200);
    dataGrid.CaptionText = "iAnywhere SACommand Example";
    this.Controls.Add(dataGrid);
    
    dataGrid.DataSource = dr;
    dataGrid.Show();
  7. 关闭 SADataReader 和 SAConnection 对象。

    dr.Close();
    conn.Close();
 ♦  发出更新行的语句
  1. 声明并初始化一个 SAConnection 对象。

    SAConnection conn = new SAConnection(
        c_connStr );
  2. 打开该连接。

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

    可将 INSERT、UPDATE 或 DELETE 语句与 ExecuteNonQuery 方法一起使用。

    SACommand updateCmd = new SACommand(
        "UPDATE Departments SET DepartmentName = 'Engineering'
        WHERE DepartmentID=100", conn );

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

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

  4. 调用 ExecuteNonQuery 方法,将更改应用到数据库。

    int recordsAffected = updateCmd.ExecuteNonQuery();
  5. 显示结果并将结果绑定到屏幕上的网格中。

    SACommand selectCmd = new SACommand(
        "SELECT * FROM Departments", conn );
    SADataReader   dr = selectCmd.ExecuteReader();
    dataGrid.DataSource = dr;
  6. 关闭 SADataReader 和 SAConnection 对象。

    dr.Close();
    conn.Close();
 ♦  发出删除行的语句
  1. 声明并初始化一个 SAConnection 对象。

    SAConnection conn = new SAConnection(
        c_connStr );
  2. 打开该连接。

    conn.Open();
  3. 创建一个 SACommand 对象,以定义并执行一条 DELETE 语句。

    可将 INSERT、UPDATE 或 DELETE 语句与 ExecuteNonQuery 方法一起使用。

    SACommand deleteCmd = new SACommand(
        "DELETE FROM Departments WHERE ( DepartmentID > 500 )", conn );

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

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

  4. 调用 ExecuteNonQuery 方法,将更改应用到数据库。

    int recordsAffected = deleteCmd.ExecuteNonQuery();
  5. 关闭 SAConnection 对象。

    conn.Close();