Tag: mysql

数据库连接应始终保持打开状态还是仅在需要时打开?

我有一个bukkit插件(minecraft),需要连接到数据库。 请原谅noob问题,但是数据库连接应该始终保持打开状态,还是在需要时打开和关闭?

JDBC字符编码

我有一个在GlassFish 3上运行的Java Web应用程序和在MySQL上运行的JPA(EclipseLink)。 我面临的问题是,如果我使用update()方法将实体保存到数据库, String字段将失去完整性; ‘?’ 显示而不是一些字符。 服务器,页面和数据库配置为使用UTF-8 。 发布表单数据后,下一页正确显示数据。 此外,在NetBeans调试中“似乎”当前实体的String属性也存储了正确的值。 Dunno,如果可以信任NetBeans调试; 可能是它正确解码,但它是不正确的。

Spring,Hibernate,Blob懒加载

我在Hibernate中需要有关延迟blob加载的帮助。 我在我的Web应用程序中有这些服务器和框架:MySQL,Tomcat,Spring和Hibernate。 数据库配置的一部分。 ${jdbc.initialPoolSize} ${jdbc.minPoolSize} ${jdbc.maxPoolSize} ${jdbc.acquireRetryAttempts} ${jdbc.acquireIncrement} ${jdbc.idleConnectionTestPeriod} ${jdbc.maxIdleTime} ${jdbc.maxConnectionAge} ${jdbc.preferredTestQuery} ${jdbc.testConnectionOnCheckin} ${hibernate.dialect} 实体类的一部分 @Lob @Basic(fetch=FetchType.LAZY) @Column(name = “BlobField”, columnDefinition = “LONGBLOB”) @Type(type = “org.springframework.orm.hibernate3.support.BlobByteArrayType”) private byte[] blobField; 问题描述。 我正在尝试在网页上显示与文件相关的数据库记录,这些记录保存在MySQL数据库中。 如果数据量很小,一切正常。 但是数据量很大我收到了一个错误java.lang.OutOfMemoryError: Java heap space我试图在每行表的blobFields中写入值。 在这种情况下,应用程序工作正常,内存不会消失。 我得出结论,标记为懒惰的blob字段@Basic(fetch=FetchType.LAZY) )实际上并不是懒惰的!

JDBC使用正确的语句返回MySQLSyntaxErrorexception

我正在用java编写一个与MySQL数据库通信的应用程序,当我测试它时,我注意到在表中插入新行的代码引发了MySQLSyntaxError Exception,所以我尝试使用MySQL Workbench执行相同的INSERT,它工作。 有问题的代码是这样的: public static boolean aggiungiElem(String nome, GrafoGenerico g){ if(connessioneAperta()){ try{ String sqlCommandUser=”SELECT USER()”; String sqlCommandInserim=”INSERT INTO salvataggi VALUES ( ? , ? , DEFAULT , NULL );”; PreparedStatement sUser=conn.prepareStatement(sqlCommandUser); ResultSet risultatiUtente=sUser.executeQuery(); String utente = null; while(risultatiUtente.next()){ utente=risultatiUtente.getString(1); } sUser.close(); PreparedStatement sInserim=conn.prepareStatement(sqlCommandInserim); sInserim.setString(1, utente); sInserim.setString(2, nome); //sInserim.setObject(3,g); System.out.println(sInserim.toString()); sInserim.executeUpdate(sqlCommandInserim); sInserim.close(); return true; } […]

使用JDBC连接器5.1从Java读取/写入MySQL中的UTF-8数据时出现问题

我有一个场景,有两个MySQL数据库(UTF-8),一个Java代码(一个定时服务),它同步两个数据库(首先读取表单并编写/更新到第二个)和一个允许修改数据加载的Web应用程序第二个数据库。 所有数据库访问都是使用IBATIS进行的(但我发现使用JDBC, PreparedStatement和ResultSet我遇到了同样的问题) 当我的java代码从第一个数据库读取数据时,我得到的字符就像’ó’ ,实际上它必须是’ó’ 。 这些数据是在没有修改第二个数据库的情况下编写的。 后来,当我在我的Web应用程序中看到加载的数据时,尽管 ,我看到了外部字符。 如果我使用…解码数据 new String(data.getBytes(“UTF-8”)); ……我正确地想象了角色(ó)。 但我不能将此解决方案作为一般规则使用,因为当我使用Web应用程序表单修改数据时,我的第二个数据库中的数据不会以UTF-8更新(尽管数据库是UTF-8且我的连接字符串使用了字符编码, characterSetResults和useUnicode参数)。 从我的Java代码中获取以下数据库设置: character_set_client–>utf8 character_set_connection–>utf8 character_set_database–>utf8 character_set_filesystem–>binary character_set_results–>utf8 character_set_server–>latin1 character_set_system–>utf8 character_sets_dir–>/usr/local/mysql51/share/mysql/charsets/ character_set_server设置无法更改,我不知道我做错了什么!! 如何使用JDBC连接器( mysql-connector-java-5.1.5-bin.jar )从MySQL读取UTF-8数据? 从第一个数据库读取数据或写入第二个数据库的问题是什么?

从Mysql DB填充JFreechart TimeSeriesCollection?

我正在尝试在我的应用程序中创建一个图表,它可以返回几个月内的温度。 此图表是JFreechart TimeSeriesCollection,我无法让图表从数据库中读取正确的数据。 它显示了一些值,但不是全部,并且没有显示正确的时间。 为了解决这个问题,我试图实现这里发布的图表,但仍然无法解决我的问题,即使已经去看了这个问题 ,正如人们建议的那样 public class NewClass extends ApplicationFrame { Connection conexao = null; PreparedStatement pst= null; ResultSet rs = null; public NewClass(String title) throws SQLException, ParseException { super(title); ChartPanel chartPanel = (ChartPanel) createDemoPanel(); chartPanel.setPreferredSize(new java.awt.Dimension(500, 270)); setContentPane(chartPanel); } private static JFreeChart createChart(XYDataset dataset) { JFreeChart chart = ChartFactory.createTimeSeriesChart( “Temperatura/Date”, // title “Date”, […]

如何使用java JDBC获取MySql的数据库“Schema”名称列表

如何使用java JDBC获取MySql的数据库“Schema”名称列表?

返回ResultSet

我正在尝试创建一个方法,从中我可以查询我的数据库并检索整个表。 目前,如果我使用方法中的数据,它的工作正常。 但是,我希望该方法返回结果。 我得到一个java.sql.SQLException: Operation not allowed after ResultSet closed在当前代码java.sql.SQLException: Operation not allowed after ResultSet closed 。 我怎样才能做到这一点? public ResultSet select() { con = null; st = null; rs = null; try { con = DriverManager.getConnection(url, user, password); st = con.createStatement(); rs = st.executeQuery(“SELECT * FROM biler”); /* if (rs.next()) { System.out.println(rs.getString(“model”)); }*/ } catch […]

ClassCastException:java.math.BigInteger在连接MySQL时无法强制转换为java.lang.Long

连接到MySQL时,出现错误(见下文)。 点击这里查看代码 我得到这个输出: run: Now connecting to databse… java.sql.SQLException: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long java.sql.SQLException: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919) at com.mysql.jdbc.ConnectionImpl.buildCollationMapping(ConnectionImpl.java:1062) at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3556) at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2513) 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.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) […]

Hibernate可以使用MySQL的“ON DUPLICATE KEY UPDATE”语法吗?

MySQL支持“ INSERT … ON DUPLICATE KEY UPDATE … ”语法,允许您“盲目地”插入数据库,并回退到更新现有记录(如果存在)。 当您需要快速事务隔离并且要更新的值依赖于数据库中已有的值时,这非常有用。 作为一个人为的例子,假设您想要计算在博客上查看故事的次数。 使用此语法执行此操作的一种方法可能是: INSERT INTO story_count (id, view_count) VALUES (12345, 1) ON DUPLICATE KEY UPDATE set view_count = view_count + 1 这比开始交易更有效,更有效,并处理新故事登上头版时发生的不可避免的exception。 我们如何使用Hibernate做同样的事情或实现相同的目标? 首先,Hibernate的HQL解析器将抛出exception,因为它不了解特定于数据库的关键字。 实际上,HQL不喜欢任何显式插入,除非它是“ INSERT … SELECT …. ”。 其次,Hibernate将SQL限制为仅选择。 如果您尝试调用session.createSQLQuery(“sql”).executeUpdate() Hibernate将抛出exception。 第三,在这种情况下,Hibernate的saveOrUpdate不符合要求。 您的测试将通过,但如果您每秒有多个访问者,则会导致生产失败。 我真的要颠覆Hibernate吗?