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 数据库相关

从 Microsoft Access 2007 迁移到 Sql Server 2005

在 Java 中连接 Microsoft Access 2007 数据库的正确方法是啥?

在 microsoft access (2007) 中启用关系数据库值的视图

带有条件列的 Microsoft Access 2007 报表

将 Microsoft Office Access 数据库引擎 2007 包含到 InstallShield Limited Edition 的安装程序中