如何使用Java从MS ACCESS数据库检索列描述

如何使用Java从MS ACCESS数据库检索列描述,java,ms-access,jdbc,ms-access-2007,jdbc-odbc,Java,Ms Access,Jdbc,Ms Access 2007,Jdbc Odbc,我正在尝试使用检索MS Access列的列描述。我能够检索数据库的所有列,如字段名、数据类型 我需要使用Java描述列数据 请给出一些建议或指导 注意:我使用此代码获取列名 public ArrayList<String> fetchtable(String value) { try { makeConnection(); String str1="Select * from "+ value; ResultSe

我正在尝试使用检索MS Access列的列描述。我能够检索数据库的所有列,如字段名、数据类型

我需要使用Java描述列数据

请给出一些建议或指导

注意:我使用此代码获取列名

public ArrayList<String> fetchtable(String value)
{       
    try
    {
       makeConnection();
       String str1="Select * from "+ value;
       ResultSet rs = st.executeQuery(str1);
       rsmd = rs.getMetaData();
       NumOfCol= rsmd.getColumnCount();
       for(int i=1;i<=NumOfCol;i++)
       {
          ColumnName = rsmd.getColumnName(i);
          System.out.println(ColumnName);
          columns.add(ColumnName);
        }       
        //System.out.println("Columns Valuessss is:" +columns);         
        }catch(Exception ae){
            ae.printStackTrace();
        }
        return columns;
    }
public ArrayList fetchtable(字符串值)
{       
尝试
{
makeConnection();
字符串str1=“选择*自”+值;
结果集rs=st.executeQuery(str1);
rsmd=rs.getMetaData();
numocol=rsmd.getColumnCount();

对于(inti=1;i,我知道检索字段描述的唯一方法是通过Microsoft DAO。一种方法是使用Java程序

  • 写一点VBScript
  • 执行它,并且
  • 捕捉结果
大概是这样的:

package com.example.getaccessfielddescription;
导入java.io.*;
公共班机{
公共静态void main(字符串[]args){
//测试数据
字符串dbFileSpec=“C:\\Users\\Public\\Database1.accdb”;
String tableName=“Clients”;
字符串fieldName=“LastName”;
字符串vbsFilePath=System.getenv(“TEMP”)+“\\GetAccessFieldDescription.vbs”;
文件vbsFile=新文件(vbsFilePath);
印刷作家;
试一试{
pw=新的打印写入程序(vbsFile);
println(“Set dbe=CreateObject(\“DAO.DBEngine.120\”);
println(“Set db=dbe.OpenDatabase(\“”+dbFileSpec+“\”));
pw.println(“Set fld=db.TableDefs(\”“+tableName+”\”)。字段(\”“+fieldName+”\”);
println(“WScript.Echo fld.Properties(\“Description\”).Value”);
pw.println(“设置fld=Nothing”);
pw.println(“Set db=Nothing”);
pw.println(“Set dbe=Nothing”);
关闭();
进程p=Runtime.getRuntime().exec(“cscript/nologo\”“+vbsFilePath+”\”);
p、 waitFor();
BufferedReader rdr=
新的BufferedReader(新的InputStreamReader(p.getInputStream());
String fieldDescription=rdr.readLine();
vbsFile.delete();
System.out.println(字段描述);
}捕获(例外e){
e、 printStackTrace();
}
}
}

您的方法非常好,我只想知道这种方法对servlet是否也可行。谢谢you@user3599755如果您正在讨论在web服务器上使用上述方法,那么可能需要解决一些权限问题。web服务器运行所使用的帐户通常被禁止使用运行任意代码。