有一张已经有数据的access表
想修改列名
在网上找了下,找到以下代码,引用ADOX,但是是VB的,这里有个CurrentProject.Connection,在c#里应该改成什么呢?
我现在是定义了一个数据库连接private OleDbConnection dbConn,然后写 MyDB.ActiveConnection = dbConn。
生成是通过了,调试的时候报错:指定的转换无效。不知道该怎么办了,请各位大虾指教。----VB修改access列名---Function ChangeTableFieldName_ADO(MyTableName As String, MyFieldName As String, strNewName As String)
    '3个参数:
    'MyTableName 字符串,表名
    'MyFieldName 字符串,原来的字段名
    'strNewName 字符串,新的字段名
    '记得先引用 ADOX
    Dim MyDB As New ADOX.Catalog
    Dim MyTable As ADOX.Table
    MyDB.ActiveConnection = CurrentProject.Connection
    Set MyTable = MyDB.Tables(MyTableName)
    MyTable.Columns(MyFieldName).Name = strNewName
End Function 

解决方案 »

  1.   

    你修改列名直接用sql 就可以了啊alter table查
      

  2.   


    不对,这是sqlserver数据库,在access里不能这样做
      

  3.   

    不明白为什么走退步的路子呢,放着好好的ADO.NET不用,用ADOX干吗?
    直接用sql语句执行一下就可以了,不用那麻烦
    sp_rename   'tablename.fieldname','newname','column';  
    用ADOX也一样
      

  4.   

    ALTER TABLE 表名 DROP COLUMN  字段名
      

  5.   

    System.Data.OleDb.OleDbConnection oleconn =new System.Data.OleDb.OleDbConnection(ConfigurationManager.AppSettings[""]); MyDB.ActiveConnection =oleconn;
      

  6.   


    '引用ADODB
    Dim AdoConn As New ADODB.Connection
    '
    AdoConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb;"
    AdoConn.Open()
    MyDB.ActiveConnection = AdoConn...
      

  7.   

    呵呵ALTER TABLE 表名 ADD COLUMN  字段名
      

  8.   

    alter table MyTable add NewColumnName text
    update MyTable set NewColumnName=OldColumnName
    alter table MyTable drop OldColumnName
      

  9.   

    完整的例子            string connection = "Provider=Microsoft.JET.OLEDB.4.0;data source=C:\\Database1.mdb";
                OleDbConnection myCon = new OleDbConnection(connection);
                myCon.Open();
                OleDbCommand command = myCon.CreateCommand();
                command.CommandText = "alter table MyTable add NewColumnName text";//将text改成字段的实际类型
                command.ExecuteNonQuery();
                command.CommandText = "update MyTable set NewColumnName=OldColumnName ";
                command.ExecuteNonQuery();
                command.CommandText = "alter table MyTable drop OldColumnName ";
                command.ExecuteNonQuery();
                myCon.Close();
      

  10.   

    最终还是没用成ADOX
    采用的是先新建一个列,拷贝数据,再删除原始列的笨办法
    结贴