基本数据类型示例

此 Microsoft JDBC Driver for SQL Server 示例应用程序说明了如何使用结果集的 getter 方法来检索基本 SQL Server 数据类型值，以及如何使用结果集的 update 方法来更新这些值。

此示例的代码文件名为 basicDT.java，该文件可在以下位置找到：

<安装目录>\sqljdbc_<版本>\<语言>\help\samples\datatypes

# 要求

若要运行此示例应用程序，必须将 classpath 设置为包含 sqljdbc.jar 文件或 sqljdbc4.jar 文件。如果 classpath 缺少 sqljdbc.jar 项或 sqljdbc4.jar 项，示例应用程序将引发“找不到类”的常见异常。还需要访问 SQL Server 2005 AdventureWorks 示例数据库。有关如何设置 classpath 的详细信息，请参阅使用 JDBC Driver。

还必须在 SQL Server 2005 AdventureWorks 示例数据库中创建以下表和示例数据：

    use AdventureWorks
    CREATE TABLE DataTypesTable
       (Col1 int IDENTITY,
        Col2 char,
        Col3 varchar(50),
        Col4 bit,
        Col5 decimal(18, 2),
        Col6 money,
        Col7 datetime,
        Col8 date,
        Col9 time,
        Col10 datetime2,
        Col11 datetimeoffset
        );

    INSERT INTO DataTypesTable
    VALUES ('A', 'Some text.', 0, 15.25, 10.00, '01/01/2006 23:59:59.991', '01/01/2006', '23:59:59', '01/01/2006 23:59:59.12345', '01/01/2006 23:59:59.12345 -1:00')

Microsoft JDBC Driver for SQL Server 提供两个类库文件：sqljdbc.jar 和 sqljdbc4.jar，具体使用哪个文件取决于首选的 Java 运行时环境 (JRE) 设置。有关选择哪个 JAR 文件的详细信息，请参阅 JDBC Driver 的系统要求。

# 示例

在下面的示例中，示例代码将建立到 SQL Server 2005 AdventureWorks 数据库的连接，然后从 DataTypesTable 测试表中检索一行数据。然后，将调用自定义的 displayRow 方法，以使用 SQLServerResultSet 类的各种 get<Type> 方法来显示结果集中包含的所有数据。

接下来，示例代码使用 SQLServerResultSet 类的各种 update<Type> 方法来更新结果集中包含的数据，然后调用 updateRow 方法将输入更新到数据库中。

最后，示例代码刷新结果集中包含的数据，然后再次调用自定义的 displayRow 方法来显示该结果集中包含的数据。

    import java.sql.*;

    import com.microsoft.sqlserver.jdbc.SQLServerResultSet;
    import microsoft.sql.DateTimeOffset;

    public class basicDT {
       public static void main(String[] args) {

          // Create a variable for the connection string.
          String connectionUrl = "jdbc:sqlserver://localhost:1433;databaseName=AdventureWorks;integratedSecurity=true;";

          // Declare the JDBC objects.
          Connection con = null;
          Statement stmt = null;
          ResultSet rs = null;

          try {
             // Establish the connection.
             Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
             con = DriverManager.getConnection(connectionUrl);

             // Create and execute an SQL statement that returns some data
             // and display it.
             String SQL = "SELECT * FROM DataTypesTable";
             stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
             rs = stmt.executeQuery(SQL);
             rs.next();
             displayRow("ORIGINAL DATA", rs);

             // Update the data in the result set.
             rs.updateString(2, "B");
             rs.updateString(3, "Some updated text.");
             rs.updateBoolean(4, true);
             rs.updateDouble(5, 77.89);
             rs.updateDouble(6, 1000.01);
             long timeInMillis = System.currentTimeMillis();
             Timestamp ts = new Timestamp(timeInMillis);
             rs.updateTimestamp(7, ts);
             rs.updateDate(8, new Date(timeInMillis));
             rs.updateTime(9, new Time(timeInMillis));
             rs.updateTimestamp(10, ts);

             //-480 indicates GMT - 8:00 hrs
             ((SQLServerResultSet)rs).updateDateTimeOffset(11, DateTimeOffset.valueOf(ts, -480));

             rs.updateRow();

             // Get the updated data from the database and display it.
             rs = stmt.executeQuery(SQL);
             rs.next();
             displayRow("UPDATED DATA", rs);
          }

          // Handle any errors that may have occurred.
          catch (Exception e) {
             e.printStackTrace();
          }

          finally {
             if (rs != null)
             try {
             rs.close();
             }
             catch(Exception e) {}

             if (stmt != null)
             try { stmt.close();
             }
             catch(Exception e) {}

             if (con != null)
             try {
             con.close();
             }
             catch(Exception e) {}
          }
       }

       private static void displayRow(String title, ResultSet rs) {
          try {
             System.out.println(title);
             System.out.println(rs.getInt(1) + " , " +  // SQL integer type.
                   rs.getString(2) + " , " +            // SQL char type.
                   rs.getString(3) + " , " +            // SQL varchar type.
                   rs.getBoolean(4) + " , " +           // SQL bit type.
                   rs.getDouble(5) + " , " +            // SQL decimal type.
                   rs.getDouble(6) + " , " +            // SQL money type.
                   rs.getTimestamp(7) + " , " +            // SQL datetime type.
                   rs.getDate(8) + " , " +              // SQL date type.
                   rs.getTime(9) + " , " +              // SQL time type.
                   rs.getTimestamp(10) + " , " +            // SQL datetime2 type.
                   ((SQLServerResultSet)rs).getDateTimeOffset(11)); // SQL datetimeoffset type.

             System.out.println();
          } catch (Exception e) {
             e.printStackTrace();
          }
       }
    }

# 请参阅

使用数据类型 (JDBC)
发送有关本主题的反馈至 Microsoft。

© 2012 Microsoft。保留所有权利。