java.sql.ResultSet#updateString ( )源码实例Demo

下面列出了java.sql.ResultSet#updateString ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: jTDS   文件: TypeInfo.java
public void update(ResultSet rs) throws SQLException {
    rs.updateString(1, typeName);
    rs.updateInt(2, normalizedType);
    rs.updateInt(3, precision);
    rs.updateString(4, literalPrefix);
    rs.updateString(5, literalSuffix);
    rs.updateString(6, createParams);
    rs.updateShort(7, nullable);
    rs.updateBoolean(8, caseSensitive);
    rs.updateShort(9, searchable);
    rs.updateBoolean(10, unsigned);
    rs.updateBoolean(11, fixedPrecScale);
    rs.updateBoolean(12, autoIncrement);
    rs.updateString(13, localTypeName);
    if (rs.getMetaData().getColumnCount() >= 18) {
        // Some servers provide more information
        rs.updateShort(14, minimumScale);
        rs.updateShort(15, maximumScale);
        rs.updateInt(16, sqlDataType);
        rs.updateInt(17, sqlDatetimeSub);
        rs.updateInt(18, numPrecRadix);
    }
}
 
源代码2 项目: gemfirexd-oss   文件: UpdateXXXTest.java
/**
 * Tests calling updateString on all columns of the row.
 * @exception SQLException database access error. Causes test to 
 *                         fail with an error.
 */
public void testUpdateString() 
    throws SQLException
{
    Statement s = createStatement(ResultSet.TYPE_FORWARD_ONLY, 
            ResultSet.CONCUR_UPDATABLE);
    ResultSet rs = s.executeQuery(SELECT_STMT);
    rs.next();

    for (int i = 1; i <= COLUMNS; i++) {
        rs.updateString(i, "2");
        assertEquals("Expected rs.getDouble(" + i + 
                     ") to match updated value", 2, (int) rs.getDouble(i));
    }
    rs.updateRow();
    rs.close();
    checkColumnsAreUpdated();
    
    s.close();
}
 
源代码3 项目: constellation   文件: ExportToJdbcPlugin.java
private static void updateResultSetParam(final GraphReadMethods rg, final ResultSet rs, final String label, final Attribute attr, final int id) throws SQLException {
    switch (attr.getAttributeType()) {
        case "boolean":
            rs.updateBoolean(label, rg.getBooleanValue(attr.getId(), id));
            break;
        case "date":
            final long date = rg.getLongValue(attr.getId(), id);
            if (date != Long.MIN_VALUE) {
                rs.updateDate(label, new Date(date));
            }
            break;
        case "datetime":
            final long timestamp = rg.getLongValue(attr.getId(), id);
            if (timestamp != Long.MIN_VALUE) {
                rs.updateTimestamp(label, new Timestamp(timestamp));
            }
            break;
        case "integer":
            rs.updateInt(label, rg.getIntValue(attr.getId(), id));
            break;
        case "float":
            rs.updateFloat(label, rg.getFloatValue(attr.getId(), id));
            break;
        case "time":
            final long time = rg.getLongValue(attr.getId(), id);
            if (time != Long.MIN_VALUE) {
                rs.updateTime(label, new Time(time));
            }
            break;
        default:
            final String s = rg.getStringValue(attr.getId(), id);
            if (s != null) {
                rs.updateString(label, s);
            }
            break;
    }
}
 
源代码4 项目: spliceengine   文件: RoutinesDefinersRightsTest.java
/**
 * Test that PHB can actually update using {@code ResultSet.insertRow},
 * {@code ResultSet.updateRow} and {@code ResultSet.deleteRow}.
 * <p/>
 * Aside: This test is somewhat artificial here, since the middle manager
 * would not be allowed to do this, presumably; just added here to test
 * this functionality (which was initially broken by the first patch for
 * DERBY-4551).
 * <p/>
 * The problem was that the nested statement contexts used for SQL
 * substatements generated for these ResultSet operations were not
 * correctly set up, so the effective user id would not be the DEFINER
 * (DBO), and authorization would fail. Cf DERBY-4551 and DERBY-3327
 * for more detail.
 */
public static void updateWage()
        throws SQLException
{
    Connection c = null;

    c = DriverManager.getConnection("jdbc:default:connection");
    Statement cStmt = c.createStatement(
        ResultSet.TYPE_SCROLL_INSENSITIVE,
        ResultSet.CONCUR_UPDATABLE);

    // Try nested statements by inserting, updating and deleting a bogus
    // row
    ResultSet rs = cStmt.executeQuery(
        "select * from s1.wages");
    assertTrue(rs.isBeforeFirst());
    rs.moveToInsertRow();
    rs.updateInt("EMPLOYEEID", 666);
    rs.updateInt("CATEGORY", 667);
    rs.updateDouble("SALARY", 666.0);
    rs.updateString("NAME", "N.N.");
    rs.insertRow();
    rs.close();

    rs = cStmt.executeQuery(
        "select * from s1.wages where name = 'N.N.'");
    rs.next();
    rs.updateDouble("SALARY", 666.1);
    rs.updateRow();
    rs.close();

    rs = cStmt.executeQuery(
        "select * from s1.wages where name = 'N.N.'");
    rs.next();
    rs.deleteRow();
    rs.close();

    cStmt.close();
    c.close();
}
 
源代码5 项目: java-technology-stack   文件: SqlQueryTests.java
@Test
public void testUpdateCustomers() throws SQLException {
	given(resultSet.next()).willReturn(true, true, false);
	given(resultSet.getInt("id")).willReturn(1, 2);
	given(connection.prepareStatement(SELECT_ID_FORENAME_WHERE_ID,
			ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE)
		).willReturn(preparedStatement);

	class CustomerUpdateQuery extends UpdatableSqlQuery<Customer> {

		public CustomerUpdateQuery(DataSource ds) {
			super(ds, SELECT_ID_FORENAME_WHERE_ID);
			declareParameter(new SqlParameter(Types.NUMERIC));
			compile();
		}

		@Override
		protected Customer updateRow(ResultSet rs, int rownum, @Nullable Map<? ,?> context)
				throws SQLException {
			rs.updateString(2, "" + context.get(rs.getInt(COLUMN_NAMES[0])));
			return null;
		}
	}

	CustomerUpdateQuery query = new CustomerUpdateQuery(dataSource);
	Map<Integer, String> values = new HashMap<>(2);
	values.put(1, "Rod");
	values.put(2, "Thomas");
	query.execute(2, values);
	verify(resultSet).updateString(2, "Rod");
	verify(resultSet).updateString(2, "Thomas");
	verify(resultSet, times(2)).updateRow();
	verify(preparedStatement).setObject(1, 2, Types.NUMERIC);
	verify(resultSet).close();
	verify(preparedStatement).close();
	verify(connection).close();
}
 
源代码6 项目: sqlbuilder   文件: QueryReader.java
/**
 * Calls updateString on the given ResultSet with the given value
 * for the position of this PlaceHolder.
 */
public void updateString(String value, ResultSet rs)
  throws SQLException
{
  if(value != null) {
    if(isInQuery()) {
      rs.updateString(getIndex(), value);
    }
  } else {
    updateNull(rs);
  }
}
 
源代码7 项目: spliceengine   文件: SURQueryMixTest.java
/**
 * Updates the current row in the ResultSet using updateRow()
 * @param rs ResultSet to be updated
 * @param meta meta for the ResultSet
 **/
private void updateRow(final ResultSet rs, final ResultSetMetaData meta) 
    throws SQLException
{
    for (int column = 1; column<=meta.getColumnCount(); column++) {
        if (meta.getColumnType(column)==Types.INTEGER) {
            // Set to negative value
            rs.updateInt(column, -rs.getInt(column));
        } else {
            rs.updateString(column, "UPDATED_" + rs.getString(column));
        }
    }
    rs.updateRow();
}
 
源代码8 项目: spring4-understanding   文件: SqlQueryTests.java
@Test
public void testUpdateCustomers() throws SQLException {
	given(resultSet.next()).willReturn(true, true, false);
	given(resultSet.getInt("id")).willReturn(1, 2);
	given(connection.prepareStatement(SELECT_ID_FORENAME_WHERE_ID,
			ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE)
		).willReturn(preparedStatement);

	class CustomerUpdateQuery extends UpdatableSqlQuery<Customer> {

		public CustomerUpdateQuery(DataSource ds) {
			super(ds, SELECT_ID_FORENAME_WHERE_ID);
			declareParameter(new SqlParameter(Types.NUMERIC));
			compile();
		}

		@Override
		protected Customer updateRow(ResultSet rs, int rownum, Map<? ,?> context)
				throws SQLException {
			rs.updateString(2, "" + context.get(rs.getInt(COLUMN_NAMES[0])));
			return null;
		}
	}

	CustomerUpdateQuery query = new CustomerUpdateQuery(dataSource);
	Map<Integer, String> values = new HashMap<Integer, String>(2);
	values.put(1, "Rod");
	values.put(2, "Thomas");
	query.execute(2, values);
	verify(resultSet).updateString(2, "Rod");
	verify(resultSet).updateString(2, "Thomas");
	verify(resultSet, times(2)).updateRow();
	verify(preparedStatement).setObject(1, 2, Types.NUMERIC);
	verify(resultSet).close();
	verify(preparedStatement).close();
	verify(connection).close();
}
 
源代码9 项目: gemfirexd-oss   文件: BigDecimalHandler.java
/** This method is a wrapper for ResultSet method 
 * updateBigDecimal(String columnName, BigDecimal x)
 * @param rs ResultSet
 * @param columnName Column Name
 * @param bdString String to be used in updateXXX method
 * @throws SQLException
 */
public static void updateBigDecimalString(ResultSet rs, String columnName,String bdString) throws SQLException{
			
	switch(representation){
		case BIGDECIMAL_REPRESENTATION:
			BigDecimal bd = (bdString == null) ? null : new BigDecimal(bdString);
			rs.updateBigDecimal(columnName, bd);
			break;
		case STRING_REPRESENTATION:
			rs.updateString(columnName, bdString);
			break;
		default:	
			new Exception("Failed: Invalid Big Decimal representation").printStackTrace();
	}
}
 
源代码10 项目: gemfirexd-oss   文件: SURQueryMixTest.java
/**
 * Updates the current row in the ResultSet using updateRow()
 * @param rs ResultSet to be updated
 * @param meta meta for the ResultSet
 **/
private void updateRow(final ResultSet rs, final ResultSetMetaData meta) 
    throws SQLException
{
    for (int column = 1; column<=meta.getColumnCount(); column++) {
        if (meta.getColumnType(column)==Types.INTEGER) {
            // Set to negative value
            rs.updateInt(column, -rs.getInt(column));
        } else {
            rs.updateString(column, "UPDATED_" + rs.getString(column));
        }
    }
    rs.updateRow();
}
 
源代码11 项目: gemfirexd-oss   文件: BigDecimalHandler.java
/** This method is a wrapper for ResultSet method 
 * updateBigDecimal(int columnIndex, BigDecimal x)
 * @param rs ResultSet
 * @param columnIndex Column Index
 * @param bdString String to be used in updateXXX method
 * @throws SQLException
 */
public static void updateBigDecimalString(ResultSet rs, int columnIndex, String bdString) throws SQLException{
			
	switch(representation){
		case BIGDECIMAL_REPRESENTATION:
			BigDecimal bd = (bdString == null) ? null : new BigDecimal(bdString);
			rs.updateBigDecimal(columnIndex, bd);
			break;
		case STRING_REPRESENTATION:
			rs.updateString(columnIndex, bdString);
			break;
		default:	
			new Exception("Failed: Invalid Big Decimal representation").printStackTrace();
	}
}
 
源代码12 项目: FoxTelem   文件: StatementsTest.java
/**
 * Tests for ResultSet.updateNClob()
 * 
 * @throws Exception
 */
public void testUpdateNClob() throws Exception {
    createTable("testUpdateNChlob", "(c1 CHAR(10) PRIMARY KEY, c2 NATIONAL CHARACTER(10)) default character set sjis");
    Properties props1 = new Properties();
    props1.setProperty(PropertyKey.useServerPrepStmts.getKeyName(), "true"); // use server-side prepared statement
    props1.setProperty(PropertyKey.characterEncoding.getKeyName(), "UTF-8"); // ensure charset isn't utf8 here
    Connection conn1 = getConnectionWithProps(props1);
    PreparedStatement pstmt1 = conn1.prepareStatement("INSERT INTO testUpdateNChlob (c1, c2) VALUES (?, ?)");
    pstmt1.setString(1, "1");
    NClob nClob1 = conn1.createNClob();
    nClob1.setString(1, "aaa");
    pstmt1.setNClob(2, nClob1);
    pstmt1.execute();
    Statement stmt1 = conn1.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
    ResultSet rs1 = stmt1.executeQuery("SELECT c1, c2 FROM testUpdateNChlob");
    rs1.next();
    NClob nClob2 = conn1.createNClob();
    nClob2.setString(1, "bbb");
    rs1.updateNClob("c2", nClob2);
    rs1.updateRow();
    rs1.moveToInsertRow();
    rs1.updateString("c1", "2");
    NClob nClob3 = conn1.createNClob();
    nClob3.setString(1, "ccc");
    rs1.updateNClob("c2", nClob3);
    rs1.insertRow();
    ResultSet rs2 = stmt1.executeQuery("SELECT c1, c2 FROM testUpdateNChlob");
    rs2.next();
    assertEquals("1", rs2.getString("c1"));
    assertEquals("bbb", rs2.getNString("c2"));
    rs2.next();
    assertEquals("2", rs2.getString("c1"));
    assertEquals("ccc", rs2.getNString("c2"));
    pstmt1.close();
    stmt1.close();
    conn1.close();

    createTable("testUpdateNChlob", "(c1 CHAR(10) PRIMARY KEY, c2 CHAR(10)) default character set sjis"); // sjis field
    Properties props2 = new Properties();
    props2.setProperty(PropertyKey.useServerPrepStmts.getKeyName(), "true"); // use server-side prepared statement
    props2.setProperty(PropertyKey.characterEncoding.getKeyName(), "SJIS"); // ensure charset isn't utf8 here
    Connection conn2 = getConnectionWithProps(props2);
    PreparedStatement pstmt2 = conn2.prepareStatement("INSERT INTO testUpdateNChlob (c1, c2) VALUES (?, ?)");
    pstmt2.setString(1, "1");
    pstmt2.setString(2, "aaa");
    pstmt2.execute();
    Statement stmt2 = conn2.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
    ResultSet rs3 = stmt2.executeQuery("SELECT c1, c2 FROM testUpdateNChlob");
    rs3.next();
    NClob nClob4 = conn2.createNClob();
    nClob4.setString(1, "bbb");
    try {
        rs3.updateNClob("c2", nClob4); // field's charset isn't utf8
        fail();
    } catch (SQLException ex) {
        assertEquals("Can not call updateNClob() when field's character set isn't UTF-8", ex.getMessage());
    }
    rs3.close();
    pstmt2.close();
    stmt2.close();
    conn2.close();
}
 
@Test(expected = SQLFeatureNotSupportedException.class)
public void assertUpdateStringForColumnLabel() throws SQLException {
    for (ResultSet each : resultSets) {
        each.updateString("label", "1");
    }
}
 
源代码14 项目: tutorials   文件: JdbcLiveTest.java
@Test
public void whenInsertUpdateRecord_thenCorrect() throws SQLException {
    Statement stmt = con.createStatement();

    String insertSql = "INSERT INTO employees(name, position, salary) values ('john', 'developer', 2000)";
    stmt.executeUpdate(insertSql);

    String selectSql = "SELECT * FROM employees";
    ResultSet resultSet = stmt.executeQuery(selectSql);

    List<Employee> employees = new ArrayList<>();

    while (resultSet.next()) {
        Employee emp = new Employee();
        emp.setId(resultSet.getInt("emp_id"));
        emp.setName(resultSet.getString("name"));
        emp.setSalary(resultSet.getDouble("salary"));
        emp.setPosition(resultSet.getString("position"));
        employees.add(emp);
    }

    assertEquals("employees list size incorrect", 1, employees.size());
    assertEquals("name incorrect", "john", employees.iterator().next().getName());
    assertEquals("position incorrect", "developer", employees.iterator().next().getPosition());
    assertEquals("salary incorrect", 2000, employees.iterator().next().getSalary(), 0.1);

    Statement updatableStmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
    ResultSet updatableResultSet = updatableStmt.executeQuery(selectSql);

    updatableResultSet.moveToInsertRow();
    updatableResultSet.updateString("name", "mark");
    updatableResultSet.updateString("position", "analyst");
    updatableResultSet.updateDouble("salary", 2000);
    updatableResultSet.insertRow();

    String updatePositionSql = "UPDATE employees SET position=? WHERE emp_id=?";
    PreparedStatement pstmt = con.prepareStatement(updatePositionSql);
    pstmt.setString(1, "lead developer");
    pstmt.setInt(2, 1);

    String updateSalarySql = "UPDATE employees SET salary=? WHERE emp_id=?";
    PreparedStatement pstmt2 = con.prepareStatement(updateSalarySql);
    pstmt.setDouble(1, 3000);
    pstmt.setInt(2, 1);

    boolean autoCommit = con.getAutoCommit();

    try {
        con.setAutoCommit(false);
        pstmt.executeUpdate();
        pstmt2.executeUpdate();
        con.commit();
    } catch (SQLException exc) {
        con.rollback();
    } finally {
        con.setAutoCommit(autoCommit);
    }
}
 
源代码15 项目: Komondor   文件: StatementsTest.java
/**
 * Tests for ResultSet.updateNClob()
 * 
 * @throws Exception
 */
public void testUpdateNClob() throws Exception {
    createTable("testUpdateNChlob", "(c1 CHAR(10) PRIMARY KEY, c2 NATIONAL CHARACTER(10)) default character set sjis");
    Properties props1 = new Properties();
    props1.put("useServerPrepStmts", "true"); // use server-side prepared statement
    props1.put("characterEncoding", "UTF-8"); // ensure charset isn't utf8 here
    Connection conn1 = getConnectionWithProps(props1);
    PreparedStatement pstmt1 = conn1.prepareStatement("INSERT INTO testUpdateNChlob (c1, c2) VALUES (?, ?)");
    pstmt1.setString(1, "1");
    NClob nClob1 = conn1.createNClob();
    nClob1.setString(1, "aaa");
    pstmt1.setNClob(2, nClob1);
    pstmt1.execute();
    Statement stmt1 = conn1.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
    ResultSet rs1 = stmt1.executeQuery("SELECT c1, c2 FROM testUpdateNChlob");
    rs1.next();
    NClob nClob2 = conn1.createNClob();
    nClob2.setString(1, "bbb");
    rs1.updateNClob("c2", nClob2);
    rs1.updateRow();
    rs1.moveToInsertRow();
    rs1.updateString("c1", "2");
    NClob nClob3 = conn1.createNClob();
    nClob3.setString(1, "ccc");
    rs1.updateNClob("c2", nClob3);
    rs1.insertRow();
    ResultSet rs2 = stmt1.executeQuery("SELECT c1, c2 FROM testUpdateNChlob");
    rs2.next();
    assertEquals("1", rs2.getString("c1"));
    assertEquals("bbb", rs2.getNString("c2"));
    rs2.next();
    assertEquals("2", rs2.getString("c1"));
    assertEquals("ccc", rs2.getNString("c2"));
    pstmt1.close();
    stmt1.close();
    conn1.close();

    createTable("testUpdateNChlob", "(c1 CHAR(10) PRIMARY KEY, c2 CHAR(10)) default character set sjis"); // sjis field
    Properties props2 = new Properties();
    props2.put("useServerPrepStmts", "true"); // use server-side prepared statement
    props2.put("characterEncoding", "SJIS"); // ensure charset isn't utf8 here
    Connection conn2 = getConnectionWithProps(props2);
    PreparedStatement pstmt2 = conn2.prepareStatement("INSERT INTO testUpdateNChlob (c1, c2) VALUES (?, ?)");
    pstmt2.setString(1, "1");
    pstmt2.setString(2, "aaa");
    pstmt2.execute();
    Statement stmt2 = conn2.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
    ResultSet rs3 = stmt2.executeQuery("SELECT c1, c2 FROM testUpdateNChlob");
    rs3.next();
    NClob nClob4 = conn2.createNClob();
    nClob4.setString(1, "bbb");
    try {
        rs3.updateNClob("c2", nClob4); // field's charset isn't utf8
        fail();
    } catch (SQLException ex) {
        assertEquals("Can not call updateNClob() when field's character set isn't UTF-8", ex.getMessage());
    }
    rs3.close();
    pstmt2.close();
    stmt2.close();
    conn2.close();
}
 
protected int updateTableUsingURS(ResultSet rs, int qty, String status, 
    Timestamp orderTime, int oid, int whichUpdate, boolean[] success) 
    throws SQLException {
  
  int rowCount = 1; 
  
  String txid =  "TXID:" + (Integer)SQLDistTxTest.curTxId.get() + " ";
     
  switch (whichUpdate) {
  case 0: 
    //"update  status = ?        
    Log.getLogWriter().info(txid + "updating tarde.sellorders table using URS with STATUS: " + status  + 
        "where OID:" + oid + " QUERY: " + "update  status = ? where oid = ?");
    //select for update of column (status) has checked already 
    //whether updating on partition column
    rs.updateString("STATUS", status);    
    rs.updateRow();

    break;
  case 1: 
    //"update trade.sellorders set qty = ?,  status = ? where where oid = ?  ",
    Log.getLogWriter().info(txid + "updating trade.sellorders table using URS with QTY:" + qty + ", " +
        "STATUS:" + status + " where OID:" + oid + " QUERY: " + "update trade.sellorders set qty = ?,  status = ? where where oid = ?  ");
    //select for update of column (status and qty) has checked already 
    //whether updating on partition column
    rs.updateInt("QTY", qty);
    rs.updateString("STATUS", status);
    rs.updateRow();
    break;
  case 2: 
    //"update trade.sellorders set order_time = ? where where oid = ? ",
    Log.getLogWriter().info(txid + "updating trade.sellorders table using URS with ORDERTIME:"
        + orderTime + " where OID:" + oid + " QUERY: " + "update trade.sellorders set order_time = ? where where oid = ? ");
    try {
      rs.updateTimestamp("ORDER_TIME", orderTime);
      rs.updateRow();
    } catch (SQLException se) {
      SQLHelper.printSQLException(se);
      if (se.getSQLState().equals("0A000") && 
         partitionKeys.contains("order_time")) {
        rowCount = 0;
        success[0] = false;
        return rowCount;
      } else throw se;
    }      
    break;
  default:
   throw new TestException ("Wrong updatable resultset used here");
  }
  success[0] = true;
  return rowCount;
}
 
源代码17 项目: jTDS   文件: Tds8Test.java
/**
 * Test column collations.
 */
public void testColumnCollations() throws Exception {
    Statement stmt = con.createStatement();
    stmt.execute("create table #testColumnCollations (id int primary key, "
            + "cp437val varchar(255) collate SQL_Latin1_General_Cp437_CI_AS, "
            + "cp850val varchar(255) collate SQL_Latin1_General_Cp850_CI_AS, "
            + "ms874val varchar(255) collate Thai_CI_AS, "
            + "ms932val varchar(255) collate Japanese_CI_AS, "
            + "ms936val varchar(255) collate Chinese_PRC_CI_AS, "
            + "ms949val varchar(255) collate Korean_Wansung_CI_AS, "
            + "ms950val varchar(255) collate Chinese_Taiwan_Stroke_CI_AS, "
            + "cp1250val varchar(255) collate SQL_Romanian_Cp1250_CI_AS, "
            + "cp1252val varchar(255) collate SQL_Latin1_General_Cp1_CI_AS)");

    ResultSet rs = stmt.executeQuery("select * from #testColumnCollations");
    assertFalse(rs.next());
    rs.close();

    PreparedStatement pstmt = con.prepareStatement(
            "insert into #testColumnCollations "
            + "(id, cp437val, cp850val, ms874val, ms932val, "
            + "ms936val, ms949val, ms950val, cp1250val, cp1252val) "
            + "values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");

    // Test inserting and retrieving pure-ASCII values
    pstmt.setInt(1, 1);
    for (int i = 2; i <= 10; i++) {
        pstmt.setString(i, "test");
    }
    assertEquals(1, pstmt.executeUpdate());

    rs = stmt.executeQuery("select * from #testColumnCollations");
    assertTrue(rs.next());
    for (int i = 2; i <= 10; i++) {
        assertEquals("test", rs.getString(i));
    }
    assertFalse(rs.next());
    rs.close();
    assertEquals(1, stmt.executeUpdate("delete from #testColumnCollations"));

    // Test inserting and retrieving charset-specific values via PreparedStatement
    String[] values = {
        "123abc\u2591\u2592\u2593\u221a\u221e\u03b1",
        "123abc\u00d5\u00f5\u2017\u00a5\u2591\u2592",
        "123abc\u20ac\u2018\u2019\u0e10\u0e1e\u0e3a",
        "123abc\uff67\uff68\uff9e\u60c6\u7210\ufa27",
        "123abc\u6325\u8140\u79a9\u9f1e\u9f32\ufa29",
        "123abc\uac4e\ub009\ubcde\u00de\u24d0\u30e5",
        "123abc\ufe4f\u00d7\uff5e\u515e\u65b0\u7881",
        "123abc\u20ac\u201a\u0103\u015e\u0162\u00f7",
        "123abc\u20ac\u201e\u017d\u00fe\u02dc\u00b8"
    };
    for (int i = 2; i <= 10; i++) {
        pstmt.setString(i, values[i - 2]);
    }
    assertEquals(1, pstmt.executeUpdate());
    pstmt.close();

    rs = stmt.executeQuery("select * from #testColumnCollations");
    assertTrue(rs.next());
    for (int i = 2; i <= 10; i++) {
        assertEquals("Column " + i + " doesn't match", values[i - 2], rs.getString(i));
    }
    assertFalse(rs.next());
    rs.close();
    pstmt.close();
    stmt.close();

    // Test inserting and retrieving charset-specific values via updateable ResultSet
    stmt = con.createStatement(
            ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
    rs = stmt.executeQuery("select * from #testColumnCollations");
    assertTrue(rs.next());
    for (int i = 2; i <= 10; i++) {
        rs.updateString(i, rs.getString(i) + "updated");
        values[i - 2] = values[i - 2] + "updated";
    }
    rs.updateRow();
    for (int i = 2; i <= 10; i++) {
        assertEquals("Column " + i + " doesn't match", values[i - 2], rs.getString(i));
    }
    assertFalse(rs.next());
    rs.close();
    stmt.close();
}
 
@Test(expected = SQLFeatureNotSupportedException.class)
public void assertUpdateStringForColumnLabel() throws SQLException {
    for (ResultSet each : resultSets) {
        each.updateString("label", "1");
    }
}
 
源代码19 项目: FoxTelem   文件: StatementsTest.java
/**
 * Tests for ResultSet.updateNString()
 * 
 * @throws Exception
 */
public void testUpdateNString() throws Exception {
    createTable("testUpdateNString", "(c1 CHAR(10) PRIMARY KEY, c2 NATIONAL CHARACTER(10)) default character set sjis");
    Properties props1 = new Properties();
    props1.setProperty(PropertyKey.useServerPrepStmts.getKeyName(), "true"); // use server-side prepared statement
    props1.setProperty(PropertyKey.characterEncoding.getKeyName(), "UTF-8"); // ensure charset is utf8 here
    Connection conn1 = getConnectionWithProps(props1);
    PreparedStatement pstmt1 = conn1.prepareStatement("INSERT INTO testUpdateNString (c1, c2) VALUES (?, ?)");
    pstmt1.setString(1, "1");
    pstmt1.setNString(2, "aaa");
    pstmt1.execute();
    Statement stmt1 = conn1.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
    ResultSet rs1 = stmt1.executeQuery("SELECT c1, c2 FROM testUpdateNString");
    rs1.next();
    rs1.updateNString("c2", "bbb");
    rs1.updateRow();
    rs1.moveToInsertRow();
    rs1.updateString("c1", "2");
    rs1.updateNString("c2", "ccc");
    rs1.insertRow();
    ResultSet rs2 = stmt1.executeQuery("SELECT c1, c2 FROM testUpdateNString");
    rs2.next();
    assertEquals("1", rs2.getString("c1"));
    assertEquals("bbb", rs2.getNString("c2"));
    rs2.next();
    assertEquals("2", rs2.getString("c1"));
    assertEquals("ccc", rs2.getNString("c2"));
    pstmt1.close();
    stmt1.close();
    conn1.close();

    createTable("testUpdateNString", "(c1 CHAR(10) PRIMARY KEY, c2 CHAR(10)) default character set sjis"); // sjis field
    Properties props2 = new Properties();
    props2.setProperty(PropertyKey.useServerPrepStmts.getKeyName(), "true"); // use server-side prepared statement
    props2.setProperty(PropertyKey.characterEncoding.getKeyName(), "SJIS"); // ensure charset isn't utf8 here
    Connection conn2 = getConnectionWithProps(props2);
    PreparedStatement pstmt2 = conn2.prepareStatement("INSERT INTO testUpdateNString (c1, c2) VALUES (?, ?)");
    pstmt2.setString(1, "1");
    pstmt2.setString(2, "aaa");
    pstmt2.execute();
    Statement stmt2 = conn2.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
    ResultSet rs3 = stmt2.executeQuery("SELECT c1, c2 FROM testUpdateNString");
    rs3.next();
    try {
        rs3.updateNString("c2", "bbb"); // field's charset isn't utf8
        fail();
    } catch (SQLException ex) {
        assertEquals("Can not call updateNString() when field's character set isn't UTF-8", ex.getMessage());
    }
    rs3.close();
    pstmt2.close();
    stmt2.close();
    conn2.close();
}
 
protected int updateTableUsingURS(ResultSet rs, int qty, String status, 
    Timestamp orderTime, int oid, int whichUpdate, boolean[] success) 
    throws SQLException {
  
  int rowCount = 1; 
  
  String txid =  "TXID:" + (Integer)SQLDistTxTest.curTxId.get() + " ";
     
  switch (whichUpdate) {
  case 0: 
    //"update  status = ?        
    Log.getLogWriter().info(txid + "updating tarde.sellorders table using URS with STATUS: " + status  + 
        "where OID:" + oid + " QUERY: " + "update  status = ? where oid = ?");
    //select for update of column (status) has checked already 
    //whether updating on partition column
    rs.updateString("STATUS", status);    
    rs.updateRow();

    break;
  case 1: 
    //"update trade.sellorders set qty = ?,  status = ? where where oid = ?  ",
    Log.getLogWriter().info(txid + "updating trade.sellorders table using URS with QTY:" + qty + ", " +
        "STATUS:" + status + " where OID:" + oid + " QUERY: " + "update trade.sellorders set qty = ?,  status = ? where where oid = ?  ");
    //select for update of column (status and qty) has checked already 
    //whether updating on partition column
    rs.updateInt("QTY", qty);
    rs.updateString("STATUS", status);
    rs.updateRow();
    break;
  case 2: 
    //"update trade.sellorders set order_time = ? where where oid = ? ",
    Log.getLogWriter().info(txid + "updating trade.sellorders table using URS with ORDERTIME:"
        + orderTime + " where OID:" + oid + " QUERY: " + "update trade.sellorders set order_time = ? where where oid = ? ");
    try {
      rs.updateTimestamp("ORDER_TIME", orderTime);
      rs.updateRow();
    } catch (SQLException se) {
      SQLHelper.printSQLException(se);
      if (se.getSQLState().equals("0A000") && 
         partitionKeys.contains("order_time")) {
        rowCount = 0;
        success[0] = false;
        return rowCount;
      } else throw se;
    }      
    break;
  default:
   throw new TestException ("Wrong updatable resultset used here");
  }
  success[0] = true;
  return rowCount;
}