通过SQL查询更改列的说明

时间:2018-08-17 06:56:45

标签: c# sql ms-access

是否可以通过SQL语句更改AccesDb列后面的描述? 更准确地说: 如何在C#中使用SQL为Access表中的列插入描述?

The original table

Desc behind the column

2 个答案:

答案 0 :(得分:1)

无法使用SQL命令设置或更改字段说明。

MS Access数据库包含纯数据库元素,例如和它们的字段)。两者都具有与数据库相关的纯属性,例如数据类型字段大小必需属性, em>默认值设置或验证规则。使用SQL可以管理所有这些事情。

但是...

这只是MS Access数据库可以包含的内容的很小一部分。 Access数据库中的大多数对象都是围绕这些纯数据库事物构建的,以在用户友好的用户界面中显示表中的数据,并让用户/开发人员创建自定义的前端以显示和管理数据库中的数据。标准的数据表(这是一种特殊的预定义访问 form ),或者使用更复杂且用户定义的 forms 报告

为支持用户围绕数据设计自定义用户界面,Microsoft不仅定义了新的对象类型(例如 forms reports ),而且还为对象添加了一些属性在数据层上,当在 TextBox ComboBox 等控件中显示或编辑数据时非常有用。其中一些属性是 Input Mask 格式说明。它们与数据的存储无关,而是用于视觉效果。这些属性无法使用SQL进行管理,但可以使用DAO之类的库以编程方式进行定义和更改,其中每个 field 都有一个 properties集合,该集合不仅包含原始属性来自数据层,还包括为支持Microsoft Access的“可视”部分而添加的其他属性。

已添加

VBA中的示例可能看起来像这样,将其转换为C#应该不太困难:

Sub SetDescription(TableName As String, FieldName As String, Description As String)

    With CurrentDb
        With .TableDefs(TableName)
            With .Fields(FieldName)
                On Error GoTo Err_SetDescription
                .Properties("Description").Value = Description
            End With
        End With
    End With

Exit_SetDescription:
    Exit Sub

Err_SetDescription:
    Select Case Err.Number
        Case 3270
            With CurrentDb
                With .TableDefs(TableName)
                    With .Fields(FieldName)
                        .Properties.Append .CreateProperty("Description", dbText, Description)
                        Resume Next
                    End With
                End With
            End With
        Case Else
            MsgBox Err.Description, vbExclamation
            Resume Exit_SetDescription
    End Select

End Sub

答案 1 :(得分:-1)

答案:

    private string InsertDescription( string mdbFile )
{
    string log = null;
    DAO.Database db;
    DAO.DBEngine dbEn = new DAO.DBEngine();
    DAO.Recordset rs;

    string value = "Bi pe di Ba pe di Buuuuuuuuuuuuuuuuuuuuuuu!!!!";
    string tabelName = "TAB";
    string columnName = "dbdb";

    try
    {
        db = dbEn.OpenDatabase(mdbFile, null, false, null);
        rs = db.OpenTable(tabelName, 0);
        rs.AddNew();

        db.TableDefs[tabelName].Fields[columnName].Properties["Description"].Value = value;
        rs.Update(1, false);
        rs.Close();

        log = "- Der Descriptionimport in die Datenbank war erfolgreich!";
    }

    catch( Exception ex )
    {
        log = "- Der Descriptionimport in die Datenbank war Nicht erfolgreich!" + Environment.NewLine + ex.Message;
    }

    return log;
}