Tag: jdbc

如何在JRuby中初始化SQLite3 JDBC驱动程序?

如何在不使用活动记录的情况下通过JDBC访问SQLite3?

Java MYSQL / JDBC查询从缓存的Connection返回过时数据

我一直在搜索Stackoverflow的答案,但似乎找不到一个不涉及Hibernate或其他数据库包装器。 我通过Tomcat 6 Java EE应用程序中的MYSQL 5.18 JDBC驱动程序直接使用JDBC。 我正在缓存Connection对象,但不缓存Statement对象。 查询的ResultSet正确地在第一次运行时返回最新数据。 当我通过PHPMyAdmin或其他一些外部工具更改几行时,重新运行查询,我得到陈旧的过时数据。 我使用的是普通语句,而不是PreparedStatements。 我试过ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE。 我也在关闭结果集。 这些并不能解决问题。 我也尝试过ResultSet.refreshRows(),但这会导致错误,因为查询有一个JOIN子句。 唯一明确解决问题的是关闭Connection并重新连接到数据库,这会导致每次查询尝试的成本都很高。 有没有办法重用Connections而不返回陈旧数据? 编辑:我目前没有使用交易查询。 这是一般代码。 Connection conn; //created elsewhere and reused … String query = “SELECT p.ID as oid,rid,handle,summary,city,state,zip,t.name AS category FROM profiles AS p JOIN (terms AS t) ON (p.tid = t.ID) WHERE p.ID = 1”; ResultSet resultSet; Statement s; […]

Unicode(希腊语)字符存储在数据库中,如“??????”

数据库中的希腊字符就像问号(“?????”)。 我找不到解决方案。 我使用Java / Swing开发了一个应用程序但是当我在MySQL中插入希腊字母时就像是问号。 我将db collat​​ion更改为utf8和列。 我的项目编码设置为UTF-8。 当我从MySQL插入希腊字母时,它们被正确存储。 我正在使用MySQL连接器jar文件。 public class Testing { /** * @param args the command line arguments */ public static void main(String[] args) { try { Connection conn=DriverManager.getConnection(“jdbc:mysql://localhost:3306/chartest”,”root”,”1234″); Statement pst=conn.createStatement(); String var1=”ασδασδ”; String sql=”INSERT INTO chars(value) values(‘”+var1+”‘)”; pst.execute(sql); } catch (SQLException ex) { Logger.getLogger(Testing.class.getName()).log(Level.SEVERE, null, ex); } } }

使用Java .jar文件提供数据库?

我想创建一个程序,用户只需运行.jar文件即可运行。 我希望这个程序能够访问数据库,该数据库在首次下载程序时预先填充了一些数据,并且当用户使用它时,会向数据库添加更多数据。 数据库应本地存储在用户的计算机上。 我最好的选择是什么? 我应该使用哪个数据库引擎,以及我需要做些什么才能使用户在安装应用程序时不必设置数据库,它将预先填充.jar文件?

用户’root’@’localhost’拒绝访问(使用密码:YES)

我想连接我的本地MYSQL数据库,它与XAMP服务器一起安装。 我创建了一个新用户,即“NewUser”,其密码为“password”。 我给了这个用户所有的特权。 我使用用户“root”编写了与数据库连接的代码(此用户没有密码)。 它的连接。 像吼叫.. return DriverManager.getConnection(“jdbc:MySql://localhost/database_name”,”root”,””); 现在我编写了代码以便由另一个用户连接相同的数据库,即“NewUser”及其密码“password” return DriverManager.getConnection(“jdbc:MySql://localhost/database_name”,”NewUser”,”password”); 但它没有联系。 控制台中的错误是 java.sql.SQLException: Access denied for user ‘NewUser’@’localhost’ (using password: YES) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4120) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:925) at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1704) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1250) at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2465) at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2498) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2283) at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:822) at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:47) at sun.reflect.GeneratedConstructorAccessor207.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:404) […]

ORA-01000:使用Spring SimpleJDBCCall时超出最大打开游标数

我们使用Spring SimpleJdbcCall来调用返回游标的Oracle中的存储过程。 看起来SimpleJdbcCall没有关闭游标,一段时间后超出了最大打开游标。 ORA-01000: maximum open cursors exceeded ; nested exception is java.sql.SQLException: ORA-01000: maximum open cursors exceeded spring 在论坛上有一些其他人经历过这个,但似乎没有答案。 它看起来像我在spring / oracle支持中的一个bug。 这个bug很关键,可能影响我们将来使用Spring JDBC。 有没有人遇到过修复 – 要么将问题跟踪到Spring代码,要么找到避免问题的解决方法? 我们正在使用Spring 2.5.6。 这是使用SimpleJdbcCall的代码的新版本,它似乎无法正确关闭proc通过游标返回的结果集: … SimpleJdbcCall call = new SimpleJdbcCall(dataSource); Map params = new HashMap(); params.put(“remote_user”, session.getAttribute(“cas_username”) ); Map result = call .withSchemaName(“urs”) .withCatalogName(“ursWeb”) .withProcedureName(“get_roles”) .returningResultSet(“rolesCur”, new au.edu.une.common.util.ParameterizedMapRowMapper() […]

PreparedStatement:如何使用JDBC将数据插入多个表

有人能告诉我是否第一个stmt.close(); 以下JDBC代码中是否需要针对两个不同的表执行两个不同的SQL查询? public class MyService { private Connection connection = null; public void save(Book book) { try { Class.forName(“com.mysql.jdbc.Driver”); connection = DriverManager.getConnection(“jdbc:mysql://localhost:3306/mydb”, “root”, “password”); PreparedStatement stmt = connection.prepareStatement(“INSERT INTO PUBLISHER (CODE, PUBLISHER_NAME) VALUES (?, ?)”); stmt.setString(1, book.getPublisher().getCode()); stmt.setString(2, book.getPublisher().getName()); stmt.executeUpdate(); stmt.close(); //1 stmt = connection.prepareStatement(“INSERT INTO BOOK (ISBN, BOOK_NAME, PUBLISHER_CODE) VALUES (?, ?, ?)”); stmt.setString(1, […]

包oracle.jdbc.driver不存在

以下代码出错![发生错误] [1] import java.sql.*; public class DBConnect{ public static void main(String a[]) throws SQLException{ // *package oracle.jdbc.driver does not exist* Driver d=new oracle.jdbc.driver.OracleDriver(); DriverManager.registerDriver(d); System.out.println(“Driver is registered”); } }

如何在JBoss中配置SQL Server数据源以使用特定的Active Directory用户进行连接?

JBoss作为Active Directory用户ABC\appuser 。 我想以AD用户ABC\dbuser连接到MS SQL Server 8.0数据库。 使用参数integratedSecurity=true ,除非我在连接URL上指定user=ABC\dbuser;password=dbpass ,否则系统将尝试连接为服务AD用户ABC\appuser 。 根据这个问题 ,我已经确认通过使用以下url,当以ABC\appuser运行应用程序时,我可以作为ABC\dbuser连接到数据库: jdbc:sqlserver://MYHOSTNAME:1433;DatabaseName=MyDatabaseName;integratedSecurity=true;user=ABC\dbuser;password=dbpass 不幸的是,当我在JBoss配置xml( JBoss\jboss-eap-6.1.0\standalone\configuration\standalone.xml )中设置数据源的url时,如下所示: jdbc:sqlserver://MYHOSTNAME:1433;DatabaseName=MyDatabaseName;integratedSecurity=true;user=ABC\dbuser;password=dbpass sqlserver 1 10 true 我无法使用此警告创建池资源: WARN [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool] (JCA PoolFiller) IJ000610: Unable to fill pool: javax.resource.ResourceException: Could not create connection 设置user-name和password XML条目的值会创建类似的故障警告。 我目前的解决方案选项似乎是以下任何一种: 扩展JBoss用于创建此数据源的任何类,将其替换为按预期应用connection-url值的自定义类或 将JBoss改为ABC\dbuser或 通过直接访问或将其添加到具有访问权限的AD组,为JBoss服务用户ABC\appuser数据库访问提供访问权限。 这些变通办法都不是优选的; 必须有一个更优雅,被接受的解决方案。 我该如何解决这个问题?

调试时没有关闭数据库连接的问题?

我有一个Java应用程序,它在开始时打开与数据库的连接,并在最后关闭它。 但是,程序并不总是完成,因为抛出exception或者我正在调试它并在中途停止它。 这是否会导致打开连接以堆积和减慢数据库速度,还是会自动清理?