Tag: jdbc

插入后的Java JDBC检索ID

我使用触发器设置所有表的PK列值,所以我不对Java中的ID做任何操作,但我需要插入后的ID。 我怎样才能获得身份证? stat.execute(“INSERT INTO TPROJECT_PROCESS_GROUP(NPROJECT_ID,VDESCRIPTION) ” + “VALUES(” + “‘” + projectID + “‘,” + “‘” + description + “‘” + “”); 编辑:嗨再次我读了这个问题,现在我得到了一个例外,比如’不支持的操作’(我翻译自我的母语,确切的英文forms可能会有所不同)。 我想这是关于oracle对GetGeneratedKeys的支持? 你对此有所了解吗? 解决方案:正如关于callablestatements的书中所提到的,该语句可用于执行存储过程和函数。 与PreparedStatement不同,大多数数据库不会对调用执行任何准备,因为它是一个如此简单的命令。 CallableStatement实例可用于返回存储过程或函数的对象,更准确地返回。 OracleConnection conn = null; //OraclePreparedStatement pstat = null; OracleCallableStatement cstat = null; String sql = “BEGIN INSERT INTO TPROJECT P (VPROJECT_TITLE,VPROJECT_DESC) VALUES(?,?) RETURNING P.NPROJECT_ID INTO ?; END;”; […]

以编程方式将数据源添加到嵌入式tomcat 7中的JNDI上下文

我正在尝试在服务器启动之前注册一个新的数据源,但是我正在查找执行的查找 javax.naming.NameNotFoundException:名称[jdbc / db]未绑定在此Context中。 无法找到[jdbc]。 这是我启动tomcat的方式: Tomcat tomcat = new Tomcat(); //… ContextResource resource = new ContextResource(); resource.setName(“jdbc/db”); resource.setAuth(“Container”); resource.setType(“javax.sql.DataSource”); resource.setScope(“Sharable”); resource.setProperty(“driverClassName”, “org.hsqldb.jdbc.JDBCDriver”); resource.setProperty(“url”, “jdbc:hsqldb:hsql://localhost:1234/mydb1”); tomcat.getServer().getGlobalNamingResources().addResource(resource); tomcat.start(); tomcat.getServer().await(); 查找: Connection conn = null; try { Context initContext = new InitialContext(); Context envContext = (Context) initContext.lookup(“java:/comp/env”); DataSource ds = (DataSource) envContext.lookup(“jdbc/db”); conn = ds.getConnection(); conn.createStatement()…. } […]

为java.sql.Connection创建一个与JDBC 3和4一起使用的包装器

是否有一些hack为java.sql.Connection创建一个包装器,它与JDBC 3和4一起工作(Sun为JDBC 4的接口添加了几个方法和新类型), 而不需要在编译时修补源代码? 我的用例是我需要生成一个适用于Java 5和6的库,我真的想避免创建它的两个版本。

SQLite和JDBC:返回UnsatisfiedLinkError

我在VirtualBox中运行Xubuntu。 我安装了sqlite3,由于某种原因不再捆绑。 我将sqlite-jdbc-3.8.7.jar添加到我的构建路径并运行这个简单的代码来测试它。 import java.sql.*; public class JDBC_test { public static void main(String[] args) throws ClassNotFoundException, SQLException { Class.forName(“org.sqlite.JDBC”); Connection connection = DriverManager.getConnection(“jdbc:sqlite:test.db”); connection.close(); } } 我收到此错误: Exception in thread “main” java.lang.UnsatisfiedLinkError: org.sqlite.core.NativeDB._open(Ljava/lang/String;I)V at org.sqlite.core.NativeDB._open(Native Method) at org.sqlite.core.DB.open(DB.java:161) at org.sqlite.core.CoreConnection.open(CoreConnection.java:145) at org.sqlite.core.CoreConnection.(CoreConnection.java:66) at org.sqlite.jdbc3.JDBC3Connection.(JDBC3Connection.java:21) at org.sqlite.jdbc4.JDBC4Connection.(JDBC4Connection.java:23) at org.sqlite.SQLiteConnection.(SQLiteConnection.java:45) at org.sqlite.JDBC.createConnection(JDBC.java:114) at org.sqlite.JDBC.connect(JDBC.java:88) at java.sql.DriverManager.getConnection(DriverManager.java:571) at […]

JDBC使用TLS证书连接到Oracle数据库

我试图在java中编写一个连接类,使用jdbc驱动程序连接到oracle数据库,但我想保护用于连接到oracle数据库的jdbcurl / username / password等参数。 我必须使用TLS证书概念连接到java中的oracle数据库。 我试着寻找一个有效的例子,却找不到一个。 任何人都可以给我一个如何实现它的想法,最近我还要添加连接池概念。 提前致谢

从数据库中显示java中的时间戳值

数据库中的日期值是2011-03-19 18:49:04 Timestamp date; ResultSet rs=smt.executeQuery(“select * from posttopic where name='”+logn+”‘”); while(rs.next()){ name=rs.getString(1); title=rs.getString(2); subject=rs.getString(3); message=rs.getString(4); date=rs.getTimestamp(5); System.out.print(date); } 上述函数返回的日期值是2011-03-19 18:49:04.0。 为什么它在最后附加.0?如何删除它?

使用jdbc / hibernate获取当前数据库事务ID?

我已经浏览了Google,但找不到任何相关内容。 基本上,我希望掌握长期运行的交易。 现在,我将浏览information_schema.INNODB_TRX或查看show engine innodb status的输出以查找trx_id ,然后打开general_logs以查看所有查询的运行情况。 有没有办法,我可以使用jdbc或hibernate在我的代码中获取此transaction_id ,以便我可以在我的服务器日志中记录它?

statement.execute()在PL / SQL结束时返回Slash错误

执行pl / sql时获取错误: ORA-06550: line 1, column 316: PLS-00103: Encountered the symbol “/” The symbol “/” was ignored. PLSQL示例: DECLARE SQL1 VARCHAR2 (1500); SQL2 VARCHAR2 (1500); BEGIN SQL1 := ‘INSERT INTO das_html_caption VALUES (”test_test”)’; SQL2 := ‘DELETE FROM das_html_caption where wording = ”test_test”’; EXECUTE IMMEDIATE SQL2; EXECUTE IMMEDIATE SQL1; EXECUTE IMMEDIATE SQL2; COMMIT; END; / […]

调用DataSource.getConnection不返回预期的连接

我有以下代码: Hashtable env1 = new Hashtable(); env1.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY,”com.ibm.websphere.naming.WsnInitialContextFactory”); log.info(“Executed step 1”); env1.put(javax.naming.Context.PROVIDER_URL, “iiop://myhost.com:9301”); log.info(“Executed step 2”); Context ctx = new InitialContext(env1); DataSource ds = (DataSource)ctx.lookup(“jdbc/mydatasource”); log.info(“Excecuted lookup =”+ds); conn = ds.getConnection(); 我在连接到WAS 6.1.0.3的独立应用程序中有以前的代码,以便从数据源检索连接。 代码非常简单,我看到相同的代码在不同的环境中工作,但在这种情况下,当我调用getConnection时,我得到一个exception。 数据源是WAS具有正确的身份validation别名集,并且在测试连接时,它可以从WAS端正常工作,但之前的代码将无法正常工作。 如果我改变这一行: conn = ds.getConnection(); 对此: conn = ds.getConnection(“username”,“password”); 然后代码将工作! 但这不是我想要的,因为数据源中的连接应该已经设置了凭据。 我最初认为这是一个Sybase问题,但它也发生在Oracle上,所以宁愿说我有WAS问题。 如果您对exception感到好奇,对于Sybase,我得到: java.sql.SQLException: JZ004: User name property missing in DriverManager.getConnection(…, Properties).DSRA0010E: […]

Spring JdbcTemplate和Threading

在Swing中使用JdbcTemplate分叉Thread以执行插入是否安全。 这是一个记录事件,我尽可能不希望它影响感知性能。