noob cast object as sqlconnection
                            
                         
                        
                     
                 
                
                    Converting from vb to c#, simple question, I hope.
In vb, I can declare a variable as an object
Private _oConn As Object
and then depending connection type needed:
Select Case Connection
  Case Connections.SQLServer
    _oConn = New SqlConnection()
  Case Connections.ODBCConn
    _oConn = New Odbc.OdbcConnection()
End Select
  Anywhere in the code after that I can write a _oConn.Open, .Close, .ExecuteScalar, etc... and it compiles, no worries
When I try the same thing with C#, it won't even compile, complains :'object' does not contain a definition for 'Close' and no extension method 'Close' accepting a first argument of type 'object' could be found
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.Odbc;
using System.Data.SqlClient;
namespace CustomerMaintenance
{
    public class DAL
    {
        private object _oConn = null;
        public enum Connections 
        { 
            SQLServer = 1,
            ODBCConn = 3,
        };
        
        public DAL(Connections Connection, string ODBCDriver, string UserID, string Password, string DataSource, string Database, int ConnectTimeout)
        {
            try
            {
                switch (Connection)
                {
                    case Connections.SQLServer: 
                        {
                          SqlConnection  _oConn = new SqlConnection("user id=" + UserID + ";" + 
                                                                    "password=" + Password + ";" + 
                                                                    "data source=" + DataSource + ";" + 
                                                                    "initial catalog=" + Database + ";" +
                                                                    "Connect Timeout = " + ConnectTimeout.ToString() + ";");
                        }; 
                        break;
                    case Connections.ODBCConn: 
                        {
                            OdbcConnection _oConn = new OdbcConnection("Driver=" + ODBCDriver + ";" + 
                                                                       "System=" + DataSource + ";" + 
                                                                       "Uid=" + UserID + ";" + 
                                                                       "Pwd=" + Password + ";");
                            _oConn.ConnectionTimeout = ConnectTimeout;
                        }; 
                        break;
                }
            }
            catch
            {
            }
            finally
            {
            }            
        }
        public int ExecuteScalar(string stringCommand, int intCommandTimeout, int intConnectionTimeout)
        {
            SqlConnection localConn = (SqlConnection)_oConn;
            int intRetVal = 0;
            SqlCommand sqlcmdCommand = new SqlCommand();
            try
            {                           
                sqlcmdCommand.CommandType = CommandType.Text;
                sqlcmdCommand.CommandText = stringCommand;
                sqlcmdCommand.CommandTimeout = intCommandTimeout;
                _oConn.Open(); <-- Will not compile
                sqlcmdCommand.Connection = localConn;
                intRetVal = Convert.ToInt16(sqlcmdCommand.ExecuteScalar());
                return intRetVal;
            }
            catch 
            {
                return 0;
            }
            finally
            {
                _oConn.Close(); <-- will not compile
                sqlcmdCommand.Clone();
                sqlcmdCommand.Dispose();
            }
        }
    }
}