代码之家  ›  专栏  ›  技术社区  ›  patrick

如何使用.NET操作Access数据库中的表

  •  4
  • patrick  · 技术社区  · 15 年前

    OleDbConnection con = OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data source=" + mdbFileName);
    

    我怎么能坐到我的桌子上?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Jay Riggs    15 年前

    向项目添加ADOX COM引用并尝试以下代码:

    using ADOX;
    
    //...
    private void Test() {
        string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=<path to your .mdb>";
        CatalogClass cat = new CatalogClass();
        cat.let_ActiveConnection(connString);
    
        RenameField(cat, "YourTableName", "OriginalFieldName", "NewFieldName");
        AddField(cat, "YourTableName", "YourNewFieldName", DataTypeEnum.adVarWChar, 50, "");
    }
    
    // Rename a field.
    private void RenameField(CatalogClass cat, string tableName, string originalFieldName, string newFieldName) {
        cat.Tables[tableName].Columns[originalFieldName].Name = newFieldName;
    }
    
    // Add a field to a specified table.
    private void AddField(ADOX.CatalogClass cat, string tableName, string newFieldName, DataTypeEnum varType, int size, string defaultValue) {
        ColumnClass col = new ColumnClass();
        col.Name = newFieldName;
        col.Type = varType;
        col.DefinedSize = size;
        col.Attributes = ColumnAttributesEnum.adColNullable;
        cat.Tables[tableName].Columns.Append((object)col, DataTypeEnum.adInteger, 0);
    
        if (!string.IsNullOrEmpty(defaultValue)) {
            col.Properties["Default"].Value = defaultValue;
        }
    
    }
    

    Rename Field in MS Access Programmatically using ADOX (C#.NET)
    Add New Field in MS Access Programmatically using ADOX (C#.Net)

    使用标准ADO.net将数据添加到新字段。

        2
  •  3
  •   Stewbob    15 年前

    您需要“更改”表并使用ExecuteNonQuery。代码如下:

    Dim dbName As String = "<path>\mdbFileName.mdb"
    Dim tmpConString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbName & ";Persist Security Info=False"
    
    Dim sqlText As String = ""
    Using cn As New OleDbConnection(tmpConString)
      cn.Open()
      sqlText = "ALTER TABLE Table1 ADD COLUMN fldNew TEXT(50)"
    
      Using cm As New OleDbCommand(sqlText, cn)
        cm.ExecuteNonQuery()
      End Using
    End Using