簡體   English   中英

使用Ado.net閱讀Access女士

[英]reading Ms Access using Ado.net

我正在用C#閱讀數據庫(Ms Access)。 我正在使用Ado.net進行連接。 該數據庫有很多表(大約100個),每個表都有大約50列和500行。 每個字段都包含不同的數據類型(整數,字符串,布爾值)。 我需要做的是將選定的表和字段轉換為二進制格式。

經過一些文獻調查之后,我計划使用“ DataReader”讀取數據,因為我只需要讀取二進制轉換的變量即可。

我的問題是

在C#編程方面,我的數據結構應該是什么? 說如果我為所有表創建單獨的類並定義成員變量和方法,那么如何使它更有效? 因為我已經提到有100個表和50個字段,所以實際上我不需要選擇所有字段(我只需要選擇所需的字段)。 我不想像這樣硬編碼(例如)

SELECT BusinessEntityID, LoginID, NationalIDNumber from table1Name

因為我必須遍歷代碼中提到的所選表和所選字段。 由於我對SQL有點陌生,請您提供一些提示嗎? 換句話說,如果我問這個問題,如何使用表和字段變量使選擇查詢有效(如果此問題有任何錯誤,請更正我)

更新資料

SQL Server SELECT INTO @variable下面提到了類似的內容?

如您所描述的那樣,由於擁有大量字段(100 x 50 = 5000),因此首先使用OleDb讀取SchemaTable可能會很有用:

清單1. Get SchemaTable(可選)

static DataTable GetSchemaTable(string connectionString)
{
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        connection.Open();
        DataTable schemaTable = 
           connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, 
           new object[] { null, null, null, "TABLE" });
        return schemaTable;
    }
}

清單2.從MS Access數據庫表讀取數據

下面顯示了從MS Access數據庫表讀取數據並使用DataAdapter OleDb對象在DataSet填充DataTable的實際過程(該過程原本封裝在我的自定義DB操作類中,如語法所示,因此可以根據需要進行修改) :

#region DataSet, DataAdapter, DataTable
internal DataSet dataSet;
internal OleDbDataAdapter dataAdapter;
internal DataTable dataTable;
private OleDbConnection connection;
#endregion

internal GetData(string SelectQuery, string ConnectionString)
{
    try
    {
        #region Create Data Objects: Connection, DataAdapter, DataSet, DataTable
        // use OleDb Connection to MS Access DB
        connection = new OleDbConnection(ConnectionString);
        connection.Open();

        // create new DataAdapter on OleDb Connection and Select Query text
        dataAdapter = new OleDbDataAdapter();
        dataAdapter.SelectCommand = new OleDbCommand(SelectQuery, connection);

        // create DataSet
        dataSet = new DataSet();

        // retrieve TableSchema
        // DataTable[] _dataTablesSchema = _dataAdapter.FillSchema(_dataSet, SchemaType.Source, "{TABLE NAME}");
        DataTable[] _dataTablesSchema = dataAdapter.FillSchema(dataSet, SchemaType.Source);

        // there is only one Table in DataSet, so use 0-index
        dataTable = _dataTablesSchema[0];

        // use DataAdapter to Fill Dataset
        dataAdapter.Fill(dataTable);

        // OPTIONAL: use OleDbCommandBuilder to build a complete set of CRUD commands
        OleDbCommandBuilder builder = new OleDbCommandBuilder(dataAdapter);
        // Update, Insert and Delete Commands
        dataAdapter.UpdateCommand = builder.GetUpdateCommand();
        dataAdapter.InsertCommand = builder.GetInsertCommand();
        dataAdapter.DeleteCommand = builder.GetDeleteCommand();
        #endregion

        connection.Close();
    }
    catch {throw; }
}

有關更多詳細信息,請參見MSDN上的文章:鏈接http://msdn.microsoft.com/zh-cn/library/system.data.oledb.oledbconnection.getoledbschematable.aspx

注意 :第一步(清單1)是可選的。 這兩個過程均基於OleDb對象,以在MS Access DB上進行操作。 對於其他數據庫類型(例如MS SQL Server),有不同的對象集(例如SQLConnection等)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM