Tag: jdbc

在JDBC中的QUERY WHERE子句中指定变量名称

有人可以给我一个关于如何在JDBC中创建查询的链接,该查询在WHERE语句中获取变量名,或者编写一个示例,更具体一点,我的代码看起来像这样: private String getLastModified(String url) { String lastModified = null; ResultSet resultSet; String query = “select LastModified from CacheTable where ” + ” URL.equals(url)”; try { resultSet = sqlStatement.executeQuery(query); } 现在我需要一种语法,使我能够返回一个ResultSet对象,其中cacheTable中的URL等于方法参数的url。 谢谢

如何在JDBC预准备语句中转义文字问号(’?’)

我想创建一个JDBC PreparedStatement,如: SELECT URL,LOCATE ( ‘?’, URL ) pos FROM Links WHERE pageId=? ORDER BY pos ASC 哪一号? 是文字和第二? 是一个参数。 我可以使用CHAR(63)代替’?’ 但我认为额外的函数调用会减慢SQL执行速度。 有没有办法逃脱第一次? ? 编辑: 下面的代码测试dkatzel的断言是? 字符串中的字符不被视为标记: public class Test { public static void main(String[] args) throws SQLException { Connection conn = DriverManager.getConnection(“jdbc:h2:mem:test”); Statement stmt = conn.createStatement(); stmt.executeUpdate(“CREATE TABLE Links(URL VARCHAR(255) PRIMARY KEY,pageId BIGINT)”); stmt.executeUpdate(“INSERT […]

在JDBC中停止或终止长时间运行的查询

有没有办法在JDBC中停止或终止长时间运行的Oracle查询? 它经常以重启应用程序服务器结束,以使jdbc与Oracle DB断开连接。 寻找类似于SQL Plus的function – 用Java或JDBC Kill session 在SQL Plus中 SQL> ALTER SYSTEM KILL SESSION ‘sid,serial#’; 在java中执行的任何线索?

在intellij中使用JDBC / Mysql Connector

我是Java的新手,我需要建立一个连接到MySQL服务器(本地),我已经在Intellij中添加了库,但它似乎不起作用,IDE无法找到我认为的类……我变得疯狂我正在寻找两个小时…我来自visual studio / c#dev环境,我想我应该错过一些东西…… 在这里,您可以从我的IDE和我想要使用的简单代码中获取图片。 您还可以推断出我已经在我的项目中导入了jar(mysql-jdbc)。 IDE图片 编辑:这是代码,注释显示错误出现的位置: import java.sql.Connection; import java.sql.DriverManager; import java.sql.*; import org.*; import com.mysql.jdbc.Driver; public class JdbcLogin { public String Login; public String MotDePasse; private boolean Logged = false; public void StartBdd(){ String driverName = “com.mysql.jdbc.Driver”; Class.forName(driverName); // here is the ClassNotFoundException String serverName = “localhost”; String mydatabase = “suptodo”; String […]

Postgres错误方法org.postgresql.jdbc.PgConnection.createClob()未实现

当我使用连接对象调用createClob方法时,如下所示 Clob clob = con.createClob(); 抛出以下exception。 Caused by: java.sql.SQLFeatureNotSupportedException: Method org.postgresql.jdbc.PgConnection.createClob() is not yet implemented. at org.postgresql.Driver.notImplemented(Driver.java:659) at org.postgresql.jdbc.PgConnection.createClob(PgConnection.java:1246) at org.apache.commons.dbcp2.DelegatingConnection.createClob(DelegatingConnection.java:868) at org.apache.commons.dbcp2.DelegatingConnection.createClob(DelegatingConnection.java:868) 我使用数据库PostgreSQL 9.6.2和JDK8并使用commons-dbcp2连接池,并在pom.xml中添加了以下Postgres依赖项 org.postgresql postgresql 42.1.1 在类org.postgresql.jdbc.PgConnection ,createClob实现如下所示,它抛出exception。 @Override public Clob createClob() throws SQLException { checkClosed(); throw org.postgresql.Driver.notImplemented(this.getClass(), “createClob()”); } 解决此问题的解决方案或解决方法是什么? 或者我们如何在Postgres查询中设置CLOB数据?

java.io.IOException:Stream已关闭

对于多个图像检索,我调用带有锚标记的PhotoHelperServlet来获取imageNames(多个图像),如下所示 PhotoHelperServlet获取Images名称 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Getting userid from session Image image = new Image(); image.setUserid(userid); ImageDAO imageDAO = new ImageDAO(); try { List imageId = imageDAO.listNames(image); if (imageId == null) { // check if imageId is retreived } request.setAttribute(“imageId”, imageId); //Redirect it to home page RequestDispatcher rd […]

通过向上转换可以安全地将Java.sql.date转换为Java.util.date吗?

Java.sql.date扩展了java.util.date,所以它是通过将java.sql.date转换为java.util.date来保存以在两者之间进行转换吗? 还是有其他方法来转换它们?

JDBC连接池与App Engine兼容

注意:我知道这个线程,但它已经很老了,而且,解决方案对我不起作用。 我正在使用App Engine和Cloud SQL,我想在所有应用程序的当前用户之间共享一个打开的连接池。 我已经尝试了几个连接池实现,它们都与本地开发服务器完美配合,但是,当部署到云时,它们会失败。 我想原因是App Engine受限制的“沙箱”环境。 有没有人知道在App Engine上运行的JDBC连接池? Apache Commons DBCP … Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.commons.dbcp2.PoolableConnection at com.google.appengine.runtime.Request.process-a49d46300800d0ca(Request.java) at org.apache.commons.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:254) at org.apache.commons.dbcp2.BasicDataSource.validateConnectionFactory(BasicDataSource.java:2162) at org.apache.commons.dbcp2.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:2148) at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:1903) at org.apache.commons.dbcp2.BasicDataSource$PaGetConnection.run(BasicDataSource.java:2267) at org.apache.commons.dbcp2.BasicDataSource$PaGetConnection.run(BasicDataSource.java:2263) at java.security.AccessController.doPrivileged(AccessController.java:63) at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1404) … Tomcat JDBC连接池 … Caused by: java.lang.SecurityException: Unable to get members for class org.apache.tomcat.jdbc.pool.DataSource … Caused […]

从JDBC查询中获取所有(可能是隐式)结果的正确方法是什么?

从Oracle 12c开始,我们可以从客户端获取隐式游标。 例如,可以在SQL Developer中运行以下PL / SQL匿名块 DECLARE c1 sys_refcursor; c2 sys_refcursor; BEGIN OPEN c1 FOR SELECT 1 AS a FROM dual; dbms_sql.return_result(c1); OPEN c2 FOR SELECT 2 AS b FROM dual; dbms_sql.return_result(c2); END; 要获得以下结果: ResultSet #1 A ————————————— 1 ResultSet #2 B ————————————— 2 这几乎像MySQL或SQL Server批处理( 例如,如本文所示 ),所以我认为我们应该能够运行以下代码: try (Statement s = connection.createStatement()) { boolean […]

一个事务中的Hibernate和JDBC

我有一个标记为@Transactional的方法。 它由几个函数组成,其中一个使用JDBC,第二个是Hibernate,第三个是JDBC。 问题是Hibernate函数所做的更改在最后一个与JDBC一起使用的函数中是不可见的。 @Transactional void update() { jdbcUpdate1(); hibernateupdate1(); jdbcUpdate2(); // results of hibernateupdate1() are not visible here } 所有函数都配置为使用相同的数据源: myDataSource bean用于代码中。 myDataSource.getConnection()用于处理jdbc函数和中的连接 getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { … } }); 用于hibernate函数。 谢谢。