Tag: mysql

使用Java与MySQL服务器建立SSL连接

我正在尝试使用Java over SSL连接到MySQL服务器。 我收到以下exception: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Cannot connect to MySQL server on www.mysite.com:3306. Make sure that there is a MySQL server running on the machine/port you are trying to connect to and that the machine this software is running on is able to connect to this host/port (ie not firewalled). Also make sure that the server […]

数据源拒绝建立连接,来自服务器的消息:“连接太多”

我正在尝试使用连接池库连接到我的数据库: DBPool 。 这是我的源代码。 DBUtils.java package DB; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import javax.sql.ConnectionPoolDataSource; import snaq.db.ConnectionPool; import com.mysql.jdbc.Driver; /** * @author decorrea */ public class DBUtils { public static String jdbc_driver_name = “com.mysql.jdbc.Driver”; private static String server_name ; private static String database; private static String username; private static String password; public String getServer_name() { […]

如何在Spring中为两个查询使用相同的连接?

我在基于Spring JdbcTemplate的dao中有以下代码 – getJdbcTemplate().update(“Record Insert Query…”); int recordId = getJdbcTemplate().queryForInt(“SELECT last_insert_id()”); 问题是我有时使用连接池中的不同连接来执行update和queryForInt查询。 这导致返回错误的recordId,因为应该从发出插入查询的同一连接调用MySql last_insert_id()。 我考虑过SingleConnectionDataSource但不想使用它,因为它会降低应用程序性能。 我只想要这两个查询的单一连接。 并非所有服务的所有请求。 所以我有两个问题: 我可以管理模板类使用的连接吗? JdbcTemplate是否执行自动事务管理? 如果我手动将事务应用于我的Dao方法,是否意味着每个查询将创建两个事务? 希望你们能够对这个话题有所了解。 更新 – 我尝试了nwinkler的方法并将我的服务层包装在一个事务中。 我很惊讶地发现在一段时间之后会再次弹出相同的错误。 深入研究Spring源代码我发现了这个 – public T execute(PreparedStatementCreator psc, PreparedStatementCallback action) throws DataAccessException { //Lots of code Connection con = DataSourceUtils.getConnection(getDataSource()); //Lots of code } 因此,与我的想法相反,每个事务不一定有一个数据库连接,但每个查询执行一个连接。 这让我回到了我的问题。 我想从同一个连接执行两个查询。 🙁 更新 –

Java PreparedStatement和ON DUPLICATE KEY UPDATE:如何知道是否插入或更新了行?

有下面的代码,我怎么知道execute()方法是否导致插入或更新?: Connection c = DriverManager.getConnection(connectionString); PreparedStatement st = c.prepareStatement(“INSERT INTO `table`(`field1`) VALUES (?) ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id);”); st.setString(1,”some value”); st.execute(); 提前致谢。

如何在使用JPA进行映射时增加mysql中String的长度

我在JPA遇到了一些麻烦。 如果有人能提供解决方案,我会非常感激。 用JPA(我使用的是MySQL DB),比方说,我有一个映射如下的类: @Entity class Employee{ int id; String employeeName; //getters and setters… } 映射到表时,我看到String在Mysql中使用varchar(255)映射。 但是,假设我有一个名字超过255个字符的员工,它会显示数据截断错误。 我知道我们可以通过在Employee列中添加“length”属性来解决这个问题: @column(length=1000) String employeeName; 这是唯一可行的方法吗? 我想,如果我们只是映射到java中的String,数据库将动态分配长度。

Spring Data加入规范

我正在尝试转换此原始SQL查询: select product.* from following_relationship join product on following_relationship.following=product.owner_id where following_relationship.owner=input 进入Spring Data规范,我认为到目前为止我的问题是加入这些表。 这是我目前在规范中的转换: protected Specification test(final User user){ return new Specification() { @Override public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) { Join pfJoin = query.from(FollowingRelationship.class).join(“following”); pfJoin.on(cb.equal(pfJoin.get(“following”),”owner”)); return query.where(cb.equal(pfJoin.get(“following”),user)).getGroupRestriction(); } }; } 我得到了这个例外: Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessA piUsageException: org.hibernate.hql.internal.ast.InvalidWithClauseException: with clause […]

一次执行多个本机查询

我想知道是否可以在Hibernate(3.2)中使用一个SQLQuery#executeUpdate()调用执行几个以分号分隔的SQL更新查询。 我有包含多个更新的字符串,如下所示: String statements = “UPDATE Foo SET bar=1*30.00 WHERE baz=1; UPDATE Foo SET bar=2*45.50 WHERE baz=2;…”; 我正在尝试做 Query query = session.createSQLQuery(statements); query.executeUpdate(); 但不断收到以下错误 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘UPDATE Foo SET bar=Y WHERE […]

在JDBC中缓存

我想在JDBC中使用缓存。 我怎样才能做到这一点? 是否有任何内置机制或我是否必须使用第三方解决方案? 使用JDBC进行缓存的最佳做法是什么。 谢谢你,杰克 编辑:CachedRowSet怎么样? http://docs.oracle.com/javase/tutorial/jdbc/basics/cachedrowset.html

在hibernate条件查询中选择“group by”的“all columns”

我想使用“group by”编写条件查询,并希望返回所有列。 Plane sql是这样的: select * from Tab group by client_name order by creation_time; 我知道它将具有count(distinct client_name)行数。 我当前的查询似乎没有给出正确的结果如下: Criteria criteria = getSession(requestType).createCriteria(Tab.class); criteria.setProjection(Projections.projectionList().add(Projections.groupProperty(“client_name”))); criteria.addOrder(Order.asc(“creationTime”)); 此查询仅返回”client_name” 。 我不想手动输入所有列名。 必须有某种方式,可以做些什么?

ResultSetImpl.checkColumnBounds或ResultSetImpl.getStringInternal中偶尔出现NullPointerException

首先,请不要将它作为NullPointerException副本以及如何修复它来关闭它。 我知道什么是NullPointerException ,我知道如何在我自己的代码中解决它,但不是当它被mysql-connector-java-5.1.36-bin.jar抛出时,我无法控制它。 我们在mySQL数据库上运行公共数据库查询时遇到exception,该查询在大多数情况下都有效。 我们在部署新版本后开始看到此exception,但发生这种exception的查询在很长一段时间内都没有发生变化。 以下是查询的外观(通过一些必要的简化)。 我用之前和之后执行的一些逻辑包围了它。 实际的代码不是全部都在一个方法中,但我把它放在一个块中,以便更容易理解。 Connection conn = … // the connection is open … for (String someID : someIDs) { SomeClass sc = null; PreparedStatement stmt = conn.prepareStatement (“SELECT A, B, C, D, E, F, G, H FROM T WHERE A = ?”); stmt.setString (1, “someID”); ResultSet res = stmt.executeQuery (); […]