我目前正在写在Java中的MDB迁移脚本。 这是指出,但添加和修改一些在MDB文件中的列名。
我创建新表和那不是一个问题,但我找不到一个查询,以改变列的名称
可以说我有具有如“ID”列的表名为Employees,“易名”,“活动?” 现在我想改变列名“活动?” “活动”(即没有问号。)
这可怎么使用JDBC的Java来完成。 谢谢
我目前正在写在Java中的MDB迁移脚本。 这是指出,但添加和修改一些在MDB文件中的列名。
我创建新表和那不是一个问题,但我找不到一个查询,以改变列的名称
可以说我有具有如“ID”列的表名为Employees,“易名”,“活动?” 现在我想改变列名“活动?” “活动”(即没有问号。)
这可怎么使用JDBC的Java来完成。 谢谢
为了达成目的的一种方法是保存下列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();
}
}
}
似乎MS A CCESS不允许的列的重命名( 参考链接 1 , 2 )。 唯一的出路就是,