从 JAVA 访问存储在 MS-Access 数据库中的日期/时间数据
Posted
技术标签:
【中文标题】从 JAVA 访问存储在 MS-Access 数据库中的日期/时间数据【英文标题】:Accessing Date/Time Data stored in MS-Access Database from JAVA 【发布时间】:2013-08-22 09:33:41 【问题描述】:我正在为我的应用程序使用 MS-Access 数据库。现在我想从 JAVA 将当前日期存储在数据库中。以下代码段将日期数据存储在数据库中,但存储的值不正确:6/6/1905。 MS-Access 中的数据类型是日期/时间。我使用以下代码段来设置当前日期:
data.setModifyDate(new Date(new java.util.Date().getTime()));
modifyDate 的类型是 java.sql.Date。 插入查询如下:
String query = "INSERT INTO testTable(id, tName, modifyDate ) " +
" VALUES ("+"'"+data.getId()+"'"+","
+"'"+data.getTName()+"'"+","
+data.getModifyDate()+")";
Statement s = conn.createStatement();
s.execute(query);
MS-Access 2007 不支持时间戳。那么,如何存储正确的日期值?
【问题讨论】:
***.com/questions/14375586/… 【参考方案1】:如果您使用 参数化查询 来执行 INSERT(无论如何您都应该这样做),您可以使用 Timestamp
。以下代码适用于我:
import java.sql.*;
public class jdbcTest
public static void main(String[] args)
try
Connection conn = DriverManager.getConnection(
"jdbc:odbc:Driver=Microsoft Access Driver (*.mdb, *.accdb);" +
"Dbq=C:\\__tmp\\Database1.accdb;");
PreparedStatement s = conn.prepareStatement(
"INSERT INTO testTable (id, tName, modifyDate) VALUES (?, ?, ?)");
s.setString(1, "foo");
s.setString(2, "bar");
s.setTimestamp(3, new Timestamp(new java.util.Date().getTime()));
s.execute();
s.close();
conn.close();
catch (Exception e)
e.printStackTrace(System.out);
【讨论】:
【参考方案2】:您正在尝试插入由 Java 的 Date 类打印的日期/时间。 我认为 MSAccess 需要它的日期/时间为 #YYYY-MM-DD HH:MM:SS# 所以尝试使用 SimpleDateFormat 在插入查询中使用正确的格式。
希望这会有所帮助。
【讨论】:
以上是关于从 JAVA 访问存储在 MS-Access 数据库中的日期/时间数据的主要内容,如果未能解决你的问题,请参考以下文章
如何将日期从 C# 存储到 MS-Access 以及如何检索它?
ASP.NET - VB.NET - 从 MS-Access 数据库中检索记录