我正在尝试检索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;
}
答案 0 :(得分:1)
我知道检索字段描述的唯一方法是通过Microsoft DAO。一种方法是使用Java程序
类似的东西:
package com.example.getaccessfielddescription;
import java.io.*;
public class Main {
public static void main(String[] args) {
// test data
String dbFileSpec = "C:\\Users\\Public\\Database1.accdb";
String tableName = "Clients";
String fieldName = "LastName";
String vbsFilePath = System.getenv("TEMP") + "\\GetAccessFieldDescription.vbs";
File vbsFile = new File(vbsFilePath);
PrintWriter pw;
try {
pw = new PrintWriter(vbsFile);
pw.println("Set dbe = CreateObject(\"DAO.DBEngine.120\")");
pw.println("Set db = dbe.OpenDatabase(\"" + dbFileSpec + "\")");
pw.println("Set fld = db.TableDefs(\"" + tableName + "\").Fields(\"" + fieldName + "\")");
pw.println("WScript.Echo fld.Properties(\"Description\").Value");
pw.println("Set fld = Nothing");
pw.println("Set db = Nothing");
pw.println("Set dbe = Nothing");
pw.close();
Process p = Runtime.getRuntime().exec("cscript /nologo \"" + vbsFilePath + "\"");
p.waitFor();
BufferedReader rdr =
new BufferedReader(new InputStreamReader(p.getInputStream()));
String fieldDescription = rdr.readLine();
vbsFile.delete();
System.out.println(fieldDescription);
} catch (Exception e) {
e.printStackTrace();
}
}
}