Как манипулировать таблицей из базы данных Access с помощью .NET - PullRequest
4 голосов
/ 11 октября 2010

У меня есть таблица с именем «Улицы» в базе данных доступа, и я открыл соединение с

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

Как мне добраться до моего стола?

Ответы [ 2 ]

3 голосов
/ 12 октября 2010

Вам необходимо «ИЗМЕНИТЬ» таблицу и использовать 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

Это добавит новый столбец с именем 'fldNew' в вашу базу данных. Затем вы можете использовать стандартную команду SQL UPDATE, чтобы добавить данные в новый столбец.

2 голосов
/ 12 октября 2010

Добавьте ссылку 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;
    }

}

Подробности можно найти в следующих сообщениях в блоге:

Переименовать поле в MSПрограммный доступ с использованием ADOX (C # .NET)
Добавление нового поля в MS Access программным путем с использованием ADOX (C # .Net)

Добавление данных в новое поле с использованием стандартныхADO.net.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...