Microsoft Access 2007 数据库相关
Posted
技术标签:
【中文标题】Microsoft Access 2007 数据库相关【英文标题】:Microsoft Access 2007 Database related 【发布时间】:2017-03-21 09:42:20 【问题描述】:对于我最近的工作,我使用的是 Microsoft Access 2007 数据库。在一个表中有两个字段文本和日期/时间。当我通过外部 java 代码访问表时,我在执行时收到错误消息。 特别是在与 Date Between 相关的 Execute Query 上。
以下是我的代码:-
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.text.ParseException;
import java.lang.*;
import java.util.*;
import java.util.Date;
import java.text.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.io.PrintWriter;
import java.io.IOException;
import java.io.Console;
import java.sql.*;
import oracle.jdbc.driver.*;
import oracle.sql.*;
import oracle.jdbc.driver.OracleDriver;
public class test_data_view
public static void main(String [] args)
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String imp_str="01-feb-2017";
String imp_end="11-mar-2017";
try
Connection con = null;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:ADB");
/*Here ADB is the User DSN name which indicates "Microsoft Access Driver(*.mdb,*.accdb)
and the database Database1.accdb is assigned with ADB.*/
Statement sta = con.createStatement();
Statement stmt = con.createStatement();
Statement stmt2 = con.createStatement();
Statement stmt3 = con.createStatement();
ResultSet rs = null;
ResultSet rs1 = null;
ResultSet rs2 = null;
ResultSet rs3 = null;
try
rs=sta.executeQuery("select count(*) from test");
while (rs.next())
String tot = rs.getString(1);
System.out.println("==================");
System.out.println("Total Count : "+tot);
System.out.println("==================");
rs1=stmt.executeQuery("select X.ename,X.bdate from test X");
while (rs1.next())
String t_name = rs1.getString(1);
String t_bdate = rs1.getString(2);
System.out.println(t_name+" "+t_bdate);
rs2=stmt2.executeQuery("select X.ename,X.bdate from test X where X.bdate BETWEEN '"+ imp_str +"' "+" AND '"+ imp_end +"'");
while (rs2.next())
String t_name_a = rs2.getString(1);
String t_bdate_a = rs2.getString(2);
System.out.println(t_name_a+" "+t_bdate_a);
catch (Exception e)
System.out.println("Test Error "+e.getMessage());
e.printStackTrace();
finally
try
stmt3.close();
if (rs2 != null)
rs2.close();
if (stmt2 != null)
stmt2.close();
rs1.close();
stmt.close();
if (rs != null)
rs.close();
if (sta != null)
sta.close();
catch (SQLException se)
se.printStackTrace();
con.close();
catch(Exception ex)
结果和执行时的错误消息:-
==================
Total Count : 7
==================
sumit 2017-02-01 00:00:00
probir 2017-02-01 00:00:00
subhajit 2017-02-01 10:40:30
supriyo 2017-02-09 10:40:30
rajdip 2017-01-01 00:00:00
indranil 2017-03-07 16:06:19
sudip 2017-03-07 21:17:24
Test Error [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in crite
ria expression.
java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Data type misma
tch in criteria expression.
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(Unknown Source)
at test_data_view.main(test_data_view.java:61)
请帮我在日期范围内生成报告。
【问题讨论】:
【参考方案1】:日期/时间值在 SQL 语句中使用 # 分隔符而不是 '。
【讨论】:
以上是关于Microsoft Access 2007 数据库相关的主要内容,如果未能解决你的问题,请参考以下文章
从 Microsoft Access 2007 迁移到 Sql Server 2005
在 Java 中连接 Microsoft Access 2007 数据库的正确方法是啥?
在 microsoft access (2007) 中启用关系数据库值的视图
带有条件列的 Microsoft Access 2007 报表
将 Microsoft Office Access 数据库引擎 2007 包含到 InstallShield Limited Edition 的安装程序中