Tag: jdbc

数据截断:日期时间值不正确:”

任何人都可以帮助我使用示例JSP代码通过JDBC将日期存储在MySql数据库中吗? 当我尝试执行下面给出的代码时,我得到以下exception: com.mysql.jdbc.MysqlDataTruncation:数据截断:日期时间值不正确:”对于第1行的列’date’ 如何克服这个问题? 以下是我的代码: Connection con = null; String StaffName = request.getParameter(“StaffName”); // String subcode = request.getParameter(“subcode”); String hourId = request.getParameter(“hourId”); if (hourId == null) hourId = “”; String day = request.getParameter(“day”); if (day == null) day = “”; String date = request.getParameter(“date”); try { Class.forName(“com.mysql.jdbc.Driver”); con = DriverManager.getConnection(“jdbc:mysql://localhost:3306/StaffAllocation”, “root”, “success”); // PreparedStatement stat […]

将CLOB插入Oracle数据库

我的问题是:你怎么解决ORA-01704: string literal too long在CLOB插入(或在查询中做任何事情)时ORA-01704: string literal too long错误? 我想要这样的查询: INSERT ALL INTO mytable VALUES (‘clob1’) INTO mytable VALUES (‘clob2’) –some of these clobs are more than 4000 characters… INTO mytable VALUES (‘clob3’) SELECT * FROM dual; 当我尝试使用实际值但我得到ORA-01704: string literal too long了。 这很明显,但是如何插入clobs(或者使用clob执行任何语句)? 我试过看这个问题 ,但我认为它没有我想要的东西。 我拥有的clobs在List ,我遍历它们来制作语句。 我的代码如下: private void insertQueries(String tempTableName) throws FileNotFoundException, DataException, […]

我可以用MySQL Connector / J执行多个以分号分隔的查询吗?

我的mysql db的jdbc驱动程序是版本5.1.25。 我想像这样执行sql查询: statement.execute(“select fullName from user where user_id=1; select fullName from user where user_id=2”); 我总是收到exception: Exception in thread “main” 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 ‘select fullName from user where user_id=2’ at line 1 […]

使用JDBC在SQL中的日期之间进行搜索?

我目前正在编写一个Java Swing应用程序,它从MYOB数据库文件中读取数据并在表格中显示某些信息。 我已经能够成功生成所需的SQL语句,但是我无法添加日期之间的搜索function(我们的数据库非常大,所以我们试图限制结果)。 我的一个查询的示例如下(用Java编写): rs = stmt.executeQuery(“SELECT sales.InvoiceNumber, sales.ShipToAddress, sales.Date ” + “FROM sales, customers ” + “WHERE sales.CardRecordID = customers.CardRecordID ” + “AND customers.Name = ‘Cash Sales’ ” + “ORDER BY sales.ShipToAddress ASC, sales.Date DESC” + “;”); 我有两个日期(它们实际上是Java中的字符串,但格式为dd / MM / yyyy)。 我尝试在我的WHERE使用另一个AND子句与BETWEEN语句,但我从JDBC [MYOB ODBC]Error getting the literal value of right operand.得到以下[MYOB ODBC]Error getting […]

SQLException:没有为jdbc找到合适的驱动程序:oracle:thin:@ // localhost:1521 / orcl

我正在尝试开发一个从eb服务类连接到Oracle数据库的Java EE应用程序,但我遇到了一个 SQLException: No suitable driver found for jdbc:oracle:thin:@//localhost:1521/orcl 我在类路径中有ojdbc6.jar ,我也在JBoss部署文件夹中validation了这一点。 我的应用程序EAR由WAR组成。 这有什么问题(根本原因)? 请帮忙。 persistence.xml中的连接URL: > “jdbc:oracle:thin:@//localhost:1521/orcl” 堆栈跟踪: 16:06:32,687 WARN [com.arjuna.ats.arjuna] (default-workqueue-1) ARJUNA012125: TwoPhaseCoordinator.beforeCompletion – failed for SynchronizationImple: javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: Could not open connection at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1361) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final] at Caused by: java.sql.SQLException: No suitable driver found for jdbc:oracle:thin:@//localhost:1521/orcl at java.sql.DriverManager.getConnection(DriverManager.java:602) [rt.jar:1.6.0_26] at java.sql.DriverManager.getConnection(DriverManager.java:154) [rt.jar:1.6.0_26] at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.getConnection(DriverManagerConnectionProviderImpl.java:173) […]

根据“尽力而为1PC”模式实现Spring ChainedTransactionManager

最好的努力1PC在这篇文章中很好地描述。 为SpringSource工作的作者David Syer提供了一个扩展Spring AbstractPlatformTransactionManager类的ChainedTransactionManager实现。 此特定事务管理器可以启动n个事务,例如JDBC或JMS会话,并使用AbstractPlatformTransactionManager n个实例执行提交/回滚,每个资源一个。 这在XA驱动程序不可用的情况下非常有用。 由于post很老,代码在Spring 2.5中运行良好,但在Spring 3+中失败了。 在Spring 3+中有一个实现类似function的请求票 。 我愿意尝试一下,但我想我先问:那里有没有实现? 谢谢

无论如何,我都无法在Hibernate中批量处理MySQL INSERT语句

我目前正面临着众所周知且常见的Hibernate插入批处理问题。 我需要保存500万行的批次。 我首先尝试使用更轻的有效载荷。 由于我必须只插入两种类型的实体(首先是所有类型A的记录,然后是所有类型B的记录,都指向常见类型C ManyToOne parent),我想从JDBC批量插入中获取最大优势。 我已经阅读了很多文档,但我没有尝试过。 我知道为了使用批量插入,我不能使用实体生成器。 所以我删除了AUTO_INCREMENT ID并且我用一个技巧设置ID: SELECT MAX(ID) FROM ENTITIES并且每次都递增。 我知道我必须定期清理会议。 我将提前发布代码,但无论如何我每500个元素执行一次事务。 我知道我必须设置hibernate.jdbc.batch_size与我的应用程序的批量大小一致,所以我在LocalSessionFactoryBean设置它(Spring ORM集成) 我知道我必须在连接URL中启用重写批处理语句。 这是我的实体 共同的父实体。 这将首先插入到单个事务中。 我不关心这里的自动增量列。 每批作业只有一个记录 @Entity @Table(…) @SequenceGenerator(…) public class Deal { @Id @Column( name = “DEAL_ID”, nullable = false) @GeneratedValue( strategy = GenerationType.AUTO) protected Long id; ……………. } 其中一个孩子(假设每批2.5M记录) @Entity @Table( name = “TA_LOANS”) public […]

什么是’Class.forName(“org.sqlite.JDBC”);’ 做?

我正在尝试使用SQLite数据库创建一个简单的应用程序。 我选择使用SQLiteJDBC驱动程序 。 以下代码取自上述网站。 我的问题是关于public static void main之后的行… 它的内容如下: Class.forName(“org.sqlite.JDBC”); 我的问题是,这条线是什么意思? 它做了什么? 它似乎没有连接到其余的代码。 Class.forName()应该返回一个类,但该行似乎独立于体内。 无论它返回的是代码的另一部分都没有使用,我可以看到。 请帮助澄清一下。 提前致谢。 public class Test { public static void main(String[] args) throws Exception { Class.forName(“org.sqlite.JDBC”); Connection conn = DriverManager.getConnection(“jdbc:sqlite:test.db”); Statement stat = conn.createStatement(); stat.executeUpdate(“drop table if exists people;”); stat.executeUpdate(“create table people (name, occupation);”); PreparedStatement prep = conn.prepareStatement( “insert into people […]

JDBC准备好的声明。 setDate(…)不保存时间,只保存日期..我怎样才能节省时间?

我有以下查询: INSERT INTO users (user_id, date_created) VALUES (?,?) 我有以下准备好的声明 PreparedStatement insertUser = dbConnection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); insertUser.setInt(1, 7); java.util.Date now = new java.util.Date(System.currentTimeMillis()); insertUser.setDate(2, new java.sql.Date((new Date(System.currentTimeMillis())).getTime())); insertUser.executeUpdate(); 如果我检查数据库,我发现它只插入今天的日期而不是时间,所以它将是: 2011-07-29 00:00:00 我应该在setDate()加入什么来获得时间?

与主机localhost,端口1433的TCP / IP连接失败

当我试图通过jdbc连接eclipse与sql server时,我反复得到这两个错误。 任何人都可以帮助我或解释为什么我得到这个? 1. The TCP/IP connection to the host localhost, port 1433 has failed. 2. The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. 谢谢。 String driver = “com.microsoft.sqlserver.jdbc.SQLServerDriver”; Class.forName(driver).newInstance(); String connString =”jdbc:sqlserver://localhost:1433/databaseName=Engg_Street;instance=SQLSERVER;encrypt=true; trustServerCertificate=true”; String username = “Vijayalakshmi”; String password = “”; conn = DriverManager.getConnection(connString,username,password);