中国制造网站上的聊天怎么做,网站营销活动页面制作,网站规划 时间,建设历史文化旅游宣传网站我们喜欢使用JDBC 没人说。 曾经 更严重的是#xff0c;如果考虑一下#xff0c;JDBC实际上是一个非常出色的API。 这也可能是Java成为当今流行平台的原因之一 。 在JDK 1.1 之前 #xff0c; 以及在ODBC之前 #xff08;这已经很久了#xff09;#xff0c;很难想象有任… 我们喜欢使用JDBC 没人说。 曾经 更严重的是如果考虑一下JDBC实际上是一个非常出色的API。 这也可能是Java成为当今流行平台的原因之一 。 在JDK 1.1 之前 以及在ODBC之前 这已经很久了很难想象有任何平台可以完全标准化数据库访问。 哎呀 SQL本身在当时甚至还没有标准化并且Java随JDBC一起出现了JDBC是一个简单的API在日常工作中您只需要了解几项内容 Connection 建模所有数据库交互的对象 PreparedStatement 使您可以执行语句的对象 ResultSet 使您可以从数据库中获取数据的对象 而已 回到现实 那是理论。 实际上在JDBC之上运行的企业软件Swift发展为 入侵JDBC。 图片版权信息 这一页 JDBC是Java开发人员的不得已的手段之一在Java开发人员中JDBC可以感觉像是真正的黑客可以通过许多方式来入侵这种非常有状态非常冗长非常神秘的API。 几乎每个使用JDBC进行操作的人都将围绕API实现包装器以至少防止 常见语法错误 绑定变量索引不匹配 动态SQL构造 使用LOB周围的边缘情况 资源处理和关闭 阵列和UDT管理 存储过程抽象 ……等等。 因此当每个人都在执行上述基础结构工作时他们并未在处理其业务逻辑。 在使用JDBC时几乎每个人都会做这些事情。 Hibernate和JPA几乎没有这些问题但是它们也不再是SQL API。 这是我们已经在jOOQ内部解决的几个示例因此您不必 如何在 case DERBY:
case H2:
case MARIADB:
case MYSQL: {try {listener.executeStart(ctx);result ctx.statement().executeUpdate();ctx.rows(result);listener.executeEnd(ctx);}// Yes. Not all warnings may have been consumed yetfinally {consumeWarnings(ctx, listener);}// Yep. Should be as simple as this. But it isnt.rs ctx.statement().getGeneratedKeys();try {ListObject list new ArrayListObject();// Some JDBC drivers seem to illegally return null// from getGeneratedKeys() sometimesif (rs ! null) {while (rs.next()) {list.add(rs.getObject(1));}}// Because most JDBC drivers cannot fetch all// columns, only identity columnsselectReturning(ctx.configuration(), list.toArray());return result;}finally {JDBCUtils.safeClose(rs);}
}如何处理BigInteger和BigDecimal else if (type BigInteger.class) {// The SQLite JDBC driver doesnt support BigDecimalsif (ctx.configuration().dialect() SQLDialect.SQLITE) {return Convert.convert(rs.getString(index),(Class) BigInteger.class);}else {BigDecimal result rs.getBigDecimal(index);return (T) (result null ? null :result.toBigInteger());}
}
else if (type BigDecimal.class) {// The SQLite JDBC driver doesnt support BigDecimalsif (ctx.configuration().dialect() SQLDialect.SQLITE) {return Convert.convert(rs.getString(index),(Class) BigDecimal.class);}else {return (T) rs.getBigDecimal(index);}
}如何从SQL Server提取 switch (configuration.dialect().family()) {case SQLSERVER:consumeLoop: for (;;)try {if (!stmt.getMoreResults() stmt.getUpdateCount() -1)break consumeLoop;}catch (SQLException e) {previous.setNextException(e);previous e;}
}说服了吗 这是令人讨厌的代码。 我们在这里或在源代码中有更多讨厌的代码示例 。 所有这些例子表明使用JDBC时你会写代码你不希望/不应该在你的应用程序写入。 这就是为什么… 我们一直在入侵JDBC因此您不必 翻译自: https://www.javacodegeeks.com/2014/04/were-hacking-jdbc-so-you-dont-have-to.html