使用 vb.net 将列添加到 dbf table

add column to dbf table with vb.net

当我需要使用 dbf 格式向 table 添加一列时遇到问题 这是添加列按钮事件的代码:

Try
        Form1.FillDataGridView("ALTER TABLE MyDBase ADD COLUMN ZipCode TEXT(10)")

    Catch ex As Exception
        MsgBox(ex.Message, MsgBoxStyle.Critical, Text)
    End Try

错误消息:不允许对该类型的对象进行操作

这是在 DataGridView 中加载 dbf 文件的代码:

 'OPEN CONNECTION TO dbf file
    cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=C:\Users\tunes\Documents\;Extended Properties=dBase IV"
    cn.Open()

    'Load file from dbf into DataGridView1
    FillDataGridView("select * from MyDBase ")

最后是 FillDataGridView 函数:

da = New OleDbDataAdapter(Query, cn)
    dt.Clear()
    da.Fill(dt)

    With DataGridView1
        .DataSource = dt


    End With

尝试以下语法:

ALTER TABLE MyDBase ADD COLUMN ZipCode C(10)

您是否尝试过下载和使用 Microsoft Visual Foxpro OleDB Provider.

您的连接字符串需要稍微简化为...

"Provider=VFPOLEDB.1;Data Source=C:\PathOnly\ToWhere\TheDataFilesExist\;"

可能是 "jet" 引擎驱动程序无法正确更改 table 结构。

假设您的计算机上安装了 Visual Foxpro,您可以在 VB.net 中执行以下操作:

Dim VFPAlterCmd As String = "ALTER TABLE MyTable ADD COLUMN ZipCode C(10)"
' NOTE -> "TEXT" is not a legitimate VFP Field type for this command string  

Dim oVFP = CreateObject("VisualFoxPro.Application")  
With oVFP  
   .DoCmd(***whatever VFP Commands desired (including SQL commands)***)   
   .DoCmd("USE MyTable EXCLUSIVE")
   .DoCmd(VFPAlterCmd)  
   .DoCmd("CLOSE DATABASES ALL")
End With  
oVFP.Quit()  
oVFP = Nothing  

祝你好运