有一张已经有数据的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
想修改列名
在网上找了下,找到以下代码,引用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
不对,这是sqlserver数据库,在access里不能这样做
直接用sql语句执行一下就可以了,不用那麻烦
sp_rename 'tablename.fieldname','newname','column';
用ADOX也一样
'引用ADODB
Dim AdoConn As New ADODB.Connection
'
AdoConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb;"
AdoConn.Open()
MyDB.ActiveConnection = AdoConn...
update MyTable set NewColumnName=OldColumnName
alter table MyTable drop OldColumnName
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();
采用的是先新建一个列,拷贝数据,再删除原始列的笨办法
结贴