protected override void Connect_Read(string strConnection) { // Use the DAO::DBEngine to open an Access database and read recordsets // Note: On one machine running Windows 10 and Office 365, the DBEngine had these details: // * TypeLib = {4AC9E1DA-5BAD-4AC7-86E3-24F4CDCECA28} // * Name = Microsoft Office 16.0 Access Database Engine Object Library // * Assembly = Microsoft.Office.Interop.Access.Dao, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C // * Path = C:\Program Files\Microsoft Office\root\VFS\ProgramFilesCommonX64\Microsoft Shared\Office16\ACEDAO.DLL DAO.DBEngine dbEngine = new DAO.DBEngine(); dbEngine.Idle(DAO.IdleEnum.dbRefreshCache); DAO.Database db = dbEngine.OpenDatabase(strConnection, false, false); DAO.Recordset rs = db.OpenRecordset( m_cfgDatabase.querySELECT, DAO.RecordsetTypeEnum.dbOpenDynaset, DAO.RecordsetOptionEnum.dbReadOnly); if (!(rs.BOF && rs.EOF)) { // Go through each record in the RecordSet, writing the result to the console window Simple_Members rsMember = new Simple_Members(); Console.WriteLine(rsMember.GetRecordHeader()); int recordsRead = 0; rs.MoveFirst(); dbEngine.Idle(DAO.IdleEnum.dbFreeLocks); while (!rs.EOF) { recordsRead++; try { ConvertRecordset(in rs, ref rsMember); Console.WriteLine(rsMember.GetRecordAsString()); } catch (Exception ex) { Console.WriteLine(UtilitiesGeneral.FormatException( this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, ex.Message)); } rs.MoveNext(); dbEngine.Idle(DAO.IdleEnum.dbFreeLocks); } rs.Close(); Console.WriteLine(" ({0} records)", recordsRead); } db.Close(); Console.WriteLine(); }
private void Connect_Read_Raw(string strConnection) { // Create and open the connection in a using block. This ensures that all resources // will be closed and disposed when the code exits. Console.WriteLine("(raw)"); using (OdbcConnection connection = new OdbcConnection(strConnection)) { // Create the Command and Parameter objects OdbcCommand command = new OdbcCommand(m_cfgDatabase.querySELECT, connection); command.Parameters.AddWithValue("@pricePoint", m_cfgDatabase.paramValue); // Open the connection in a try/catch block try { // Create and execute the DataReader, writing the result to the console window Simple_Members rsMember = new Simple_Members(); Console.WriteLine(rsMember.GetRecordHeader()); int recordsRead = 0; connection.Open(); OdbcDataReader reader = command.ExecuteReader(); while (reader.Read()) { recordsRead++; ConvertRecordset(in reader, ref rsMember); Console.WriteLine(rsMember.GetRecordAsString()); } reader.Close(); Console.WriteLine(" ({0} records)", recordsRead); } catch (Exception ex) { Console.WriteLine(UtilitiesGeneral.FormatException( this.ToString(), System.Reflection.MethodBase.GetCurrentMethod().Name, ex.Message)); } } Console.WriteLine(); }