通过jdbc检查ms访问中是否存在表

时间:2012-02-29 15:22:51

标签: java ms-access jdbc

有人可以告诉我如何通过使用java数据库连接来检查微软访问中是否存在表。搜索后,我会去做类似的事情     如果不是IsNull(DlookUp(“Name”,“MSysObjects”,“Name ='TableName'”))那么     '表存在 我试图在jdbc程序中实现相同的东西

import java.sql.*;
class CheckTable{
public static void main(String [] rak){
 boolean flag;
 try{
 flag=false;
 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
 String dataSourceName="test"; 
 String dbURL="jdbc:odbc:"+dataSourceName;
 Connection con=DriverManager.getConnection(dbURL,"","");
 Statement s=con.createStatement(); 
//s.execute("create table xyz (name text, hiredate date)");
//s.execute("insert into xyz values('xz1','22-dec-2005')");
// s.execute("insert into xyz values('pr','2-21-2009')");
 s.execute(" If Not IsNull(DlookUp('Name','MSysObjects',"Name='xyz'")) Then "+ flag=true + ");

 /* 
      ResultSet rs=s.getResultSet();
  if (rs!=null){
       while(rs.next()){
       System.out.println(rs.getString(1)+rs.getString(2));
      }}
  */      
 }
 catch(Exception e){
    e.printStackTrace();
}
System.out.println(" table exists :"+flag);
   }
  }

我在s.execute()语句中收到错误请帮我解释语法。 我得到的错误是: ')'预计 非法开始表达 未公开的字符文字 不是声明 ;除外 所有错误都在线上执行(“如果不是IsNull”(DlookUp('Name','MSysObjects',“Name ='xyz'”))然后“+ flag = true +”);

1 个答案:

答案 0 :(得分:0)

试试select 1 from TABLE_NAME。如果表不存在,这将抛出SQLException。检查SQLStateerrorCode - 此案例会有一个特定值。

不幸的是,每个数据库的代码都不同,因此您必须在控制台上打印一次,然后在异常处理程序中复制正确的值。