Tag: sql server

约会两天rest

我正在使用Java JDBC将日期写入sql server 2008,然后将其读回。 读取的日期始终比书面日期提前两天。 我正在使用预准备语句插入包含Date字段的行。 日期值由以下人员提供: java.sql.Date todaysDate = new java.sql.Date(System.currentTimeMillis()) ; System.out.println(todaysDate.toString()) -> 2012-07-02 ps.setDate(8, todaysDate); 将日期写入db后,如果运行,sql server会显示正确的日期: select date from table_name where date!=null ->2012-07-02 如果我通过JDBC运行相同的查询,则使用从结果集中检索日期值 java.sql.Date sqlDate = rs.getDate(“date”) ; sqlDate.toString() ->2012-06-30 插入的行是表中唯一具有非空日期的行,因此这似乎不是读取错误记录的情况。 我认为这将是一个众所周知的问题,但我在谷歌搜索“两天rest”问题时找到的唯一参考没有明确的答案。 有任何想法吗? beeky(生活在过去)

有什么区别:使用JPA @TableGenerator的序列ID,@ GeneratedValue与数据库Auto_Increment

Q1。 :使用数据库中的序列ID应用有什么区别 一个。 CREATE TABLE Person ( id long NOT NULL AUTO_INCREMENT … PRIMARY KEY (id) ) 与 B. @Entity public class Person { @Id @TableGenerator(name=”TABLE_GEN”, table=”SEQUENCE_TABLE”, pkColumnName=”SEQ_NAME”, valueColumnName=”SEQ_COUNT”, pkColumnValue=”PERSON_SEQ”) @GeneratedValue(strategy=GenerationType.TABLE, generator=”TABLE_GEN”) private long id; … } 我的系统高度并发 。 由于我的数据库是Microsoft SQL服务器,我不认为它支持@SequenceGenerator ,因此我必须继续使用容易出现并发问题的@TableGenerator 。 Q2。 这里的链接( http://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing#Advanced_Sequencing )表明B可能会遇到并发问题,但我不理解建议的解决方案。 如果有人能向我解释如何避免B的并发问题,我将不胜感激。 以下是他们解决方案的片段: If a large sequence pre-allocation size […]

已插入知道新记录的SQL Server 2005

是否有任何方法可以找出是否插入新记录而不是在sql server 2005中写入触发器。(它可以是tsql或java …)因为供应商不允许在那里触发DB …也如何用新插入的行数据生成一个文件..是一个很好的解决方案?

在日期时间字段或时区问题疯狂的MS SQL Server JDBC驱动程序?

在调试期间,我以简单的例子结束: select convert(datetime, ‘2015-04-15 03:30:00’) as ts go Apr 15 2015 03:30AM (1 row affected) select convert(int, datediff(second, ‘1970-01-01 00:00:00’, convert(datetime, ‘2015-04-15 03:30:00’))) as ts go 1429068600 (1 row affected) $ TZ=UTC date –date=@1429068600 +%F_%T 2015-04-15_03:30:00 当我从JDBC执行查询时,我得到2个不同于上面的结果!!!! 码: String TEST_QUERY = “select convert(datetime, ‘2015-04-15 03:30:00’) as ts”; PreparedStatement stmt2 = conn.prepareStatement(TEST_QUERY); ResultSet rs = stmt2.executeQuery(); […]

SQL Server中的日期提取问题

我正在尝试列出使用SQL Server在表中注册的日期,但我的问题是我提取的所有日期与表中的日期相差2天。 例如,我在我的数据库中获得了2012-12-25,当我检索它并将其转换为Java.util.Date时,它就像2012-12-23 … 我在另一张表中的日期处理过程正常。 我正在使用SQL Server 2008,Hibernate 3和Spring 3。 编辑: 表的列数据类型是日期,我正在使用hibernate检索它,所以这是我的hibernate查询调用: public List retrieveAllHolidays() { return (List) sessionFactory.getCurrentSession().createQuery(“from Holiday”) .list(); } 假日对象有两个属性:一个字符串和一个日期(从数据库中检索后这个不正确)。

datetimeoffset hibernate mapping

我正在尝试使用ms sql server的hibernate,并且难以将sql类型datetimeoffset映射到java。 如果我尝试在逆向工程配置中设置映射类型: 我得到一个错误说…… 像org.hibernate.MappingException:jdbc-type:microsoft.sql.Types.DATETIMEOFFSET不是已知的JDBC Type也不是有效的数字 我想在这种情况下只能使用详细的jdbc类型。 有关如何解决这个问题的任何想法?

如何通过Hibernate获取我连接的数据库名称?

我试图获取我在SQL Server中连接的数据库的名称。 我尝试过: Query query = session.createQuery(“SELECT db_name()”); List dbNames = query.list(); 但是,我收到以下错误: [ERROR PARSER:35] *** ERROR: :0:0: unexpected end of subtree Exception in thread “main” java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.MethodNode \-[METHOD_CALL] MethodNode: ‘(‘ +-[METHOD_NAME] IdentNode: ‘db_name’ {originalText=db_name} \-[EXPR_LIST] SqlNode: ‘exprList’ 如何获取我连接的数据库的名称?

从UNKNOWN到UNKNOWN的转换不受支持

我得到以下运行存储过程的exception: com.microsoft.sqlserver.jdbc.SQLServerException:不支持从UNKNOWN到UNKNOWN的转换。 该过程定义如下: CREATE PROCEDURE spTest ( @p1 varchar(1024) , @p2 varchar(1024) , @p3 char(1) , @p4 varchar(254), @p5 varchar(254), @debug bit ) 我在Java中的参数定义如下: Object [] params = {“1,2,3”,“d”,“2”,“”,“”,1}; 我认为这是由角色造成的。 有什么想法吗?

Java Hibernate和SQL Server中UUID的不同表示

我正在尝试使用Hibernate将POJO中的UUID列映射到SQL Server表列。 注释应用如下: @Id @GeneratedValue @Column(name = “Id”, columnDefinition = “uniqueidentifier”) public UUID getId(){ … } 但是,似乎Java Hibernate映射和SQL服务器之间存在一些字节序问题。 例如,在我的Java应用程序中,我将ID表示为: 4375CF8E-DEF5-43F6-92F3-074D34A4CE35 ADE3DAF8-A62B-4CE2-9D8C-B4E4A54E3DA1 而在SQL Server中,这些表示为: 8ECF7543-F5DE-F643-92F3-074D34A4CE35 F8DAE3AD-2BA6-E24C-9D8C-B4E4A54E3DA1 有没有办法在双方都有相同的代表? 请注意, uniqueidentifier仅用于在SQL Server中具有uniqueidentifier类型的id而不是binary类型; 从注释中删除uniqueidentifier时存在同样的问题(通过将binary转换为uniqueidentifier可以观察到该问题)。

加载JDBC驱动程序中的classNotFoundException

我是java的新手,我正在Netbeans 6.9.1 IDE上开发Java EE应用程序。 我必须将我的Java应用程序与SQL Server 2005连接。 为此,我已经下载了sqljdbc.jar文件并将其放入我的系统上的C:\Program Files (x86)\Microsoft SQL Server\JDBC Drver\lib并在命令提示符下设置了类路径,就像这样 set classpath=.;C:\Program Files (x86)\Microsoft SQL Server\JDBC Drver\lib\sqljdbc.jar 并通过右键单击主项目并选择其属性选择库,在IDE中设置类路径。 然后在编译选项卡中添加了一个sqljdbc.jar ,但是当我执行这段代码时 import java.sql.*; /** * * @author abc */ public class DBConnection { public Connection dbConnect(String db_connect_string) { try { Class.forName( “com.microsoft.jdbc.sqlserver.SQLServerDriver”); Connection conn = DriverManager.getConnection(db_connect_string); System.out.println(“connected”); return conn; } catch (Exception e) […]