jdbc connector(4)

/**
*
* 執行多條SQL語句,用半形分號分隔﹐可以設置isAutoCommit的屬性﹐然后commit(),rollback() 使用方法:<br>
* DBDAO dao = new DBDAO(); //或者直接調用帶參數的構造方法﹐不再設置isAutoCommit的屬性
* dao.setAutoCommit(false); int[] count = dao.doBatch(sql); dao.commit();
* //或者dao.rollback(); dao.close();
*
* @param sql
* String 形如:"select * from tlb_a;delete from tlb_b"
* @return int[] 對應分號相隔的sql語句執行成功的條數
* @throws SQLException
* SQL異常
* @deprecated instead use
* <code>doBatch(String sql, Object[][] param)</code>
*/
@Deprecated
public int[] doBatch(String sql) throws SQLException {
int[] rowResult = null;
String a;
Statement statement = null;
try {
statement = connection.createStatement();
java.util.StringTokenizer st = new java.util.StringTokenizer(sql, ";");
while (st.hasMoreElements()) {
a = st.nextToken();
statement.addBatch(a);
}
rowResult = statement.executeBatch();
} catch (SQLException e) {
LOG.error(e.toString(), e);
throw e;
} finally {
if (statement != null) {
statement.close();
statement = null;
}
}
return rowResult;
}
/**
* 新增批處理方法 支持SQL預編譯 ,但一次只能處理一個SQL.<br>
* <b> 注意:<br>
* <ul>
* <li>為避免用戶漏置 autocommit參數,出現非預期的結果,本方法內置 autoCommit=false
* <li>方法內未調用connection.commit(),connection.close()方法,需用戶自行調用.
* <li>方法內置 connection.rollback(),用戶只需捕獲異常即可.</b>
* </ul>
* 例如:
*
* <pre>
* DBDAO db = new DBDAO();
* String sql = "update table1 set column1=?, column2=? where id=?";
* Object[][] param = { { "value11", "value12", 1 },
* { "value21", "value22", 2 },
* { "value31", "value32", 3 } };
* db.doBatch(sql, param);
* </pre>
* @param sql
* @param param
* @return
* @throws SQLException
*/


/**
* 新增批處理方法 支持SQL預編譯 ,但一次只能處理一個SQL.<br>
* <b> 注意:<br>
* <ul>
* <li>為避免用戶漏置 autocommit參數,出現非預期的結果,本方法內置 autoCommit=false
* <li>方法內未調用connection.commit(),connection.close()方法,需用戶自行調用.
* <li>方法內置 connection.rollback(),用戶只需捕獲異常即可.</b>
* </ul>
* 例如:
*
* <pre>
* DBDAO db = new DBDAO();
* String sql = "update table1 set column1=?, column2=? where id=?";
* Object[][] param = { { "value11", "value12", 1 }, { "value21", "value22", 2 }, { "value31", "value32", 3 } };
* db.doBatch(sql, param);
* </pre>
*
* @param sql
* @param param
* @return
* @throws SQLException
*/
public int[] doBatch(String sql, Object[][] param) throws SQLException {
int[] rowResult = null;
PreparedStatement pstmt = null;
try {
connection.setAutoCommit(false);
pstmt = connection.prepareStatement(sql);
for (int i = 0; i < param.length; i++) {
for (int j = 0; j < param[i].length; j++)
pstmt.setObject(j + 1, param[i][j]);
pstmt.addBatch();
}
rowResult = pstmt.executeBatch();
} catch (SQLException e) {
connection.rollback();
LOG.error(e.toString(), e);
throw e;
} finally {
if (pstmt != null) {
pstmt.close();
pstmt = null;
}
}
return rowResult;
}

/**
* close statement object
*
* @throws SQLException
*/
public void closeStatement() throws SQLException {
if (statement != null) {
statement.close();
statement = null;
}
}

/**
* close preparedstatement object
*
* @throws SQLException
*/
public void closePreparedStatement() throws SQLException {
if (preparedStatement != null) {
preparedStatement.close();
preparedStatement = null;
}
}

/**
* 關閉連接。 <p/>
*
* @throws SQLException
* SQL異常
*/
public void close() throws SQLException {
try {
if (statement != null) {
statement.close();
statement = null;
}
if (preparedStatement != null) {
preparedStatement.close();
preparedStatement = null;
}
if (resultset != null) {
resultset.close();
resultset = null;
}
if (connection != null) {
connection.close();
connection = null;
}
} catch (SQLException e) {
LOG.error(e.toString(), e);
throw e;
}
}
/**
* 調試程式時使用
*
* @param sql
* @param pram
* @return
*/
public static String toSqlString(String sql, Object[] pram) throws Exception {
String str = sql;
try {
for (int i = 0; i < pram.length; i++) {
try {
str = str.replaceFirst("\\?", "'" + pram[i] + "'");
} catch (PatternSyntaxException e) {
e.printStackTrace();
}
}
} catch (Exception e) {
LOG.error(e);
}
LOG.info(str);
return str;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Flink的JDBC连接器是一个用于在Flink流处理作业中与外部数据库进行交互的重要组件。这个连接器可以连接到多种数据库,其中包括Oracle数据库。 Oracle是一个流行的关系型数据库管理系统,广泛用于企业级应用和大规模数据存储。Flink的JDBC连接器通过使用Oracle JDBC驱动程序,在Flink作业中无缝集成了对Oracle数据库的访问和查询功能。 Flink的JDBC连接器支持Oracle数据库的各种操作,包括数据读取、数据写入和数据更新。使用Flink的JDBC连接器,可以轻松地从Oracle数据库中读取数据,进行流处理和分析,然后将结果写回到数据库中。 在Flink作业中使用JDBC连接器与Oracle数据库进行交互是相对简单的。只需要在Flink的作业配置文件中指定Oracle数据库的连接信息和表信息,并指定要执行的SQL语句或查询语句。Flink的JDBC连接器会根据配置信息建立与Oracle数据库的连接,并执行指定的操作。 总而言之,Flink的JDBC连接器是一个强大的工具,可以将Flink的流处理和分析能力与Oracle数据库的数据存储和查询功能结合起来。使用Flink的JDBC连接器,可以轻松地实现与Oracle数据库的集成,并实现复杂的数据处理和分析任务。 ### 回答2: Flink JDBC Connector 是 Apache Flink 框架的一个重要组件,它用于将 Flink 应用程序与关系型数据库进行连接和交互。而Oracle是一种功能强大且广泛使用的商业关系型数据库管理系统,所以可以肯定地说,Flink JDBC Connector 是支持连接和操作 Oracle 数据库的。 使用 Flink JDBC Connector 可以方便地在 Flink 应用程序中读取和写入 Oracle 数据库的数据。对于读取数据,可以通过指定查询语句来从 Oracle 数据库中提取数据,并将其转换为 Flink DataStream 或 Table 进行进一步处理和分析。对于写入数据,可以将 Flink 应用程序的计算结果直接插入到 Oracle 数据库中的指定表中。 Flink JDBC Connector 提供了与 Oracle 数据库交互所需的 JDBC 驱动程序,并具有处理数据库连接管理、事务管理等方面的能力。另外,Flink JDBC Connector 还支持将查询结果批量写入或者批量读取,以提高数据处理的效率和性能。 在使用 Flink JDBC Connector 连接 Oracle 数据库时,我们需要配置连接参数,包括数据库的 URL、用户名、密码等,并根据需要指定要执行的 SQL 查询语句或插入数据的表名。通过合理配置这些参数,Flink 应用程序可以轻松地与 Oracle 数据库进行数据交互。 总之,Flink JDBC Connector 是支持连接和操作 Oracle 数据库的,它为 Flink 应用程序提供了与 Oracle 数据库交互的便利性和灵活性,使得我们可以方便地在大数据处理中使用 Oracle 数据库。 ### 回答3: 是的,Flink JDBC连接器支持与Oracle数据库的集成。Flink提供了适用于Oracle的JDBC连接器,可以通过该连接器将Flink与Oracle数据库连接起来,并在Flink作业中读取和写入Oracle数据库的数据。 使用Flink JDBC连接器与Oracle集成非常简单。首先,我们需要在Flink作业中设置Oracle数据库的连接URL、用户名和密码等连接参数。然后,可以通过Flink的JDBCSourceFunction从Oracle数据库中读取数据,并将其转换为流数据进行进一步的处理和计算。另外,也可以使用Flink的JDBCSinkFunction将流数据写入到Oracle数据库中。 在与Oracle集成时,Flink的JDBC连接器提供了对Oracle特定的数据类型和功能的支持。它可以处理Oracle的数值、字符串、日期、时间戳等常见数据类型,并且支持Oracle的事务和批处理操作。此外,Flink还提供了对Oracle的连接池管理和数据分片等功能,以提高性能和可伸缩性。 总之,Flink JDBC连接器可以很方便地与Oracle数据库集成,实现在Flink作业中读取和写入Oracle数据库的功能。无论是实时数据流处理还是批处理作业,都可以通过Flink与Oracle进行无缝集成,以实现各种数据处理和分析的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值