作为数据转换过程的一部分,我最近编写了一个脚本来向数据库表中添加一列。我正在使用 ODBC,性能不是一个大问题。
JScript - 这很好用
var cxn = new ActiveXObject("Adodb.connection");
cxn.Open(connectionString);
var statement = "alter table MyTable add MyColumn varchar(40) null";
var changed = 0;
cxn.execute(statement, changed, 0x80);
MFC/C++ & CDatabase/ODBC - 工作也很好
CDatabase db;
if (db.Open(NULL, FALSE, FALSE, szConnectionString, FALSE))
db.ExecuteSQL("ALTER TABLE MyTable ADD MyColumn VARCHAR(40) NULL");
C#/ADONet - 不起作用
using (var cxn = GetOpenConnection())
{
var cmd = cxn.CreateCommand();
cmd.CommandText = "ALTER TABLE MyTable ADD MyColumn VARCHAR(40) NULL";
// MS Access specific SQL also fails
//cmd.CommandText = "ALTER TABLE MyTable ADD COLUMN MyColumn TEXT(40)";
cmd.ExecuteNonQuery();
....
ExecuteNonQuery() 返回 -1 表示失败。我不确定为什么。
同样,这三个都使用具有相同连接字符串的 ODBC。为什么 C# 版本不起作用?