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 JDBC 驱动程序 » 使用 JDBC 访问数据

 

使用 JDBC 执行插入、更新和删除

Statement 对象执行静态 SQL 语句。您可使用 Statement 对象的 executeUpdate 方法执行 INSERT、UPDATE 和 DELETE 等 SQL 语句,这些语句不返回结果集。诸如 CREATE TABLE 的语句及其它数据定义语句也可通过使用 executeUpdate 来执行。

使用 iAnywhere JDBC 驱动程序执行成批插入时,建议使用较小的列大小。建议不要使用成批插入方式向 long binary 或 long varchar 列中插入大的二进制或字符数据,这样可能会导致性能下降。这是因为 iAnywhere JDBC 驱动程序只有分配较大的内存大小才能保存成批插入的各行。在所有其它情况下,与逐个插入相比,成批插入会提供更佳的性能。

如果不希望您的应用程序使用成批插入方式向 long binary 或 long varchar 列中插入大数据,则任何成批插入列的缺省最大字段大小为 256K。如果您的应用程序需要成批插入的列数据超过 256K,则必须先在 Statement.setMaxFieldSize() 方法中指定更大的最大字段大小,然后再执行成批插入。

以下代码段说明如何执行 INSERT 语句。它将已传递到 InsertStatic 方法的 Statement 对象用作一个参数。

public static void InsertStatic( Statement stmt )
{
  try
  {
    int iRows = stmt.executeUpdate(
      "INSERT INTO Departments (DepartmentID, DepartmentName)"
      + " VALUES (201, 'Eastern Sales')" );
    // Print the number of rows inserted
    System.out.println(iRows + " rows inserted");
  }
  catch (SQLException sqe)
  {
    System.out.println("Unexpected exception : " +
              sqe.toString() + ", sqlstate = " +
              sqe.getSQLState());
  }
  catch (Exception e)
  {
    e.printStackTrace();
  }
}
可用源代码

此代码段是位于 samples-dir\SQLAnywhere\JDBC 目录中的 JDBCExample 类的一部分。

注意
  • executeUpdate 方法返回一个用于反映操作所影响到的行数的整数。在此情况下,成功的 INSERT 会返回值 1。

  • 作为服务器端的类运行时,System.out.println 的输出会显示在数据库服务器消息窗口中。

♦  运行 JDBC 的 Insert 示例:
  1. 使用 Interactive SQL,以 DBA 身份连接到示例数据库。

  2. 确保已安装 JDBCExample 类。

    有关安装 Java 示例类的详细信息,请参见准备示例

  3. 定义一个名为 JDBCExample 的存储过程,该存储过程充当类中 JDBCExample.main 方法的包装:

    CREATE PROCEDURE JDBCExample( IN arg CHAR(50) )
      EXTERNAL NAME 'JDBCExample.main([Ljava/lang/String;)V'
      LANGUAGE JAVA;
  4. 如下所示调用 JDBCExample.main 方法:

    CALL JDBCExample( 'insert' );

    参数字符串 'insert' 用以调用 InsertStatic 方法。

  5. 确认 Departments 表中已添加一行。

    SELECT * FROM Departments;

    示例程序会在数据库服务器消息窗口中显示 Departments 表的更新内容。

  6. 在示例类中有一个称为 DeleteStatic 的类似方法,用于显示如何删除刚刚添加的行。如下所示调用 JDBCExample.main 方法:

    CALL JDBCExample( 'delete' );

    参数字符串 'delete' 用以调用 DeleteStatic 方法。

  7. 确认该行已从 Departments 表中删除。

    SELECT * FROM Departments;

    示例程序会在数据库服务器消息窗口中显示 Departments 表的更新内容。