internal static DbType TypeNameToDbType(SQLiteConnection connection, string typeName, SQLiteConnectionFlags flags)
        {
            SQLiteDbTypeMapping sQLiteDbTypeMapping;
            SQLiteDbTypeMapping sQLiteDbTypeMapping1;
            DbType dbType;
            DbType?defaultDbType = null;

            if (connection != null)
            {
                flags |= connection.Flags;
                if ((flags & SQLiteConnectionFlags.UseConnectionTypes) == SQLiteConnectionFlags.UseConnectionTypes)
                {
                    SQLiteDbTypeMap sQLiteDbTypeMap = connection._typeNames;
                    if (sQLiteDbTypeMap != null && typeName != null)
                    {
                        if (sQLiteDbTypeMap.TryGetValue(typeName, out sQLiteDbTypeMapping))
                        {
                            return(sQLiteDbTypeMapping.dataType);
                        }
                        int num = typeName.IndexOf('(');
                        if (num > 0 && sQLiteDbTypeMap.TryGetValue(typeName.Substring(0, num).TrimEnd(new char[0]), out sQLiteDbTypeMapping))
                        {
                            return(sQLiteDbTypeMapping.dataType);
                        }
                    }
                }
                defaultDbType = connection.DefaultDbType;
            }
            if ((flags & SQLiteConnectionFlags.NoGlobalTypes) == SQLiteConnectionFlags.NoGlobalTypes)
            {
                if (defaultDbType.HasValue)
                {
                    return(defaultDbType.Value);
                }
                defaultDbType = new DbType?(SQLiteConvert.GetDefaultDbType(connection));
                SQLiteConvert.DefaultDbTypeWarning(typeName, flags, defaultDbType);
                return(defaultDbType.Value);
            }
            lock (SQLiteConvert._syncRoot)
            {
                if (SQLiteConvert._typeNames == null)
                {
                    SQLiteConvert._typeNames = SQLiteConvert.GetSQLiteDbTypeMap();
                }
                if (typeName != null)
                {
                    if (!SQLiteConvert._typeNames.TryGetValue(typeName, out sQLiteDbTypeMapping1))
                    {
                        int num1 = typeName.IndexOf('(');
                        if (num1 > 0 && SQLiteConvert._typeNames.TryGetValue(typeName.Substring(0, num1).TrimEnd(new char[0]), out sQLiteDbTypeMapping1))
                        {
                            dbType = sQLiteDbTypeMapping1.dataType;
                            return(dbType);
                        }
                    }
                    else
                    {
                        dbType = sQLiteDbTypeMapping1.dataType;
                        return(dbType);
                    }
                }
                if (defaultDbType.HasValue)
                {
                    return(defaultDbType.Value);
                }
                defaultDbType = new DbType?(SQLiteConvert.GetDefaultDbType(connection));
                SQLiteConvert.DefaultDbTypeWarning(typeName, flags, defaultDbType);
                return(defaultDbType.Value);
            }
            return(dbType);
        }