使用JDBC的Java在MDB文件更改栏目名称(Changing Column Name in MD

2019-10-18 09:05发布

我目前正在写在Java中的MDB迁移脚本。 这是指出,但添加和修改一些在MDB文件中的列名。

我创建新表和那不是一个问题,但我找不到一个查询,以改变列的名称

可以说我有具有如“ID”列的表名为Employees,“易名”,“活动?” 现在我想改变列名“活动?” “活动”(即没有问号。)

这可怎么使用JDBC的Java来完成。 谢谢

Answer 1:

为了达成目的的一种方法是保存下列VBScript代码为RenameColumn.vbs ...

Option Explicit

Dim objArgs, dbPath, tblName, oldColName, newColName
Dim dbe  ' As DAO.DBEngine
Dim db   ' As DAO.Database
Dim fld  ' As DAO.Field

Set objArgs = WScript.Arguments
dbPath = objArgs(0)
tblName = objArgs(1)
oldColName = objArgs(2)
newColName = objArgs(3)

Set dbe = CreateObject("DAO.DBEngine.120")
Set db = dbe.OpenDatabase(dbPath)
Set fld = db.TableDefs(tblName).Fields(oldColName)
fld.Name = newColName
Set fld = Nothing
Set db = Nothing
Set dbe = Nothing

...然后你的Java程序可以使用代码是这样调用它:

import java.io.*;

public class RenameColumns {

    public static void main(String[] args) {
        String dbPath = "C:\\__tmp\\Database1.accdb";
        String tblName = "Employees";
        String oldColName = "Active?";
        String newColName = "Active";

        String cmd = 
                "cscript C:\\__tmp\\RenameColumn.vbs"
                    + " \"" + dbPath + "\""
                    + " \"" + tblName + "\""
                    + " \"" + oldColName + "\""
                    + " \"" + newColName + "\"";
        try {
            Process p = Runtime.getRuntime().exec(cmd);
            p.waitFor();
            BufferedReader rdr = 
                    new BufferedReader(new InputStreamReader(p.getErrorStream()));
            int errorLines = 0;
            String line = rdr.readLine();
            while (line != null) {
                errorLines++;
                System.out.println(line);  // display error line(s), if any
                line = rdr.readLine();
            }
            if (errorLines == 0) {
                System.out.println("The operation completed successfully.");
            }
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

}


Answer 2:

似乎MS A CCESS不允许的列的重命名( 参考链接 1 , 2 )。 唯一的出路就是,

  • 在不同的表备份您的数据
  • 除去列
  • 添加新名称的列
  • 从备份表填充表。


文章来源: Changing Column Name in MDB file using JDBC java