如何使用Java从MS ACCESS数据库检索列描述
我正在尝试使用检索MS Access列的列描述。我能够检索数据库的所有列,如字段名、数据类型 我需要使用Java描述列数据 请给出一些建议或指导 注意:我使用此代码获取列名如何使用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
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服务器运行所使用的帐户通常被禁止使用运行任意代码。